题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1129
注意:c_code[i]=(p_code[i*k%n]-i)%28;
#include<iostream> #include<cstring> #include<cstdio> #include<map> using namespace std; char dc[50]={'_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t', 'u','v','w','x','y','z','.'}; map <char,int> mp; char str[120]; int pcode[120],ccode[120]; int main(void) { mp['_']=0;mp['a']=1;mp['b']=2;mp['c']=3;mp['d']=4;mp['e']=5;mp['f']=6;mp['g']=7;mp['h']=8;mp['i']=9; mp['j']=10;mp['k']=11;mp['l']=12;mp['m']=13;mp['n']=14;mp['o']=15;mp['p']=16;mp['q']=17;mp['r']=18; mp['s']=19;mp['t']=20;mp['u']=21;mp['v']=22;mp['w']=23;mp['x']=24;mp['y']=25;mp['z']=26;mp['.']=27; int n,len,i,j,k; while(~scanf("%d",&k)&&k) { scanf("%s",str); len=strlen(str); for(i=0;i<len;i++) { ccode[i]=mp[str[i]]; pcode[i*k%len]=(ccode[i]+i)%28; } for(i=0;i<len;i++) printf("%c",dc[pcode[i]]); printf("\n"); } return 0; }