主题:[讨论]zoj上1006题老是WA?帮忙看下代码,先谢啦~~
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i;
int n;
int k;
char plain[70]={0},cipher[70]={0};
int p[70]={0},c[70]={0};
cin>>k;
while(k&&k<=300) //输入密钥和密文
{
cin>>cipher;
n=strlen(cipher);
for(i=0;i<n;i++) //将字母转换成要求的数字
{
switch(cipher[i])
{
case '_': c[i]=0;break;
case '.': c[i]=27;break;
default: c[i]=cipher[i]-96;
}
}
for(i=0;i<n;i++)
{
int t;
t=(k*i)%n;
p[t]=(c[i]+i)%28;
}
for(i=0;i<n;i++)
{
switch(p[i])
{
case 0: plain[i]='_';break;
case 27: plain[i]='.';break;
default: plain[i]=p[i]+96;
}
}
cout<<plain<<endl;
cin>>k;
}
return 0;
}
#include<string>
using namespace std;
int main()
{
int i;
int n;
int k;
char plain[70]={0},cipher[70]={0};
int p[70]={0},c[70]={0};
cin>>k;
while(k&&k<=300) //输入密钥和密文
{
cin>>cipher;
n=strlen(cipher);
for(i=0;i<n;i++) //将字母转换成要求的数字
{
switch(cipher[i])
{
case '_': c[i]=0;break;
case '.': c[i]=27;break;
default: c[i]=cipher[i]-96;
}
}
for(i=0;i<n;i++)
{
int t;
t=(k*i)%n;
p[t]=(c[i]+i)%28;
}
for(i=0;i<n;i++)
{
switch(p[i])
{
case 0: plain[i]='_';break;
case 27: plain[i]='.';break;
default: plain[i]=p[i]+96;
}
}
cout<<plain<<endl;
cin>>k;
}
return 0;
}