q:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1006
a:
水题啊,。。。。
基本是对的,,但格式没转换,懒转换了。。
#include<iostream>
using namespace std;
int main()
{
int plaincode[28]; //明文整数数组
int ciphercode[28]; //密文整数数组
char plaintext[28]; //明文
char ciphertext[28]; //密文
int k; //密匙
int n; //字符长度
int i;
cin>>k>>n;
for(i=0;i<n;++i)
cin>>ciphertext[i]; //输入密文
//转化为ciphercode
for(int j=0;j<n;++j)
{
if(ciphertext[j]>='a'&&ciphertext[j]<='z')
ciphercode[j]=ciphertext[j]-'a'+1;
else if(ciphertext[j]=='.')
ciphercode[j]=27;
else if(ciphertext[j]=='_')
ciphercode[j]=0;
}
//得到plaintext的值
int m;
for(m=0;m<n;++m)
{
plaincode[k*m%n]=(ciphercode[m]+m)%28;
}
for(int b=0;b<n;++b)
{
if(plaincode[b]==0)
plaintext[b]='_';
if(plaincode[b]==27)
plaintext[b]='.';
else
plaintext[b]=(plaincode[b]+'a'-1);
cout<<plaintext[b]<<" ";
}
system("pause");
return 0;
}