PKU 1317 Do the Untwist (ZOJ 1006)
http://poj.org/problem?id=1317
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6
与えられた暗号化文字列を復号する。
int arr[100]; main(){ string in; int k; while(cin>>k,k){ cin>>in; rep(i,SZ(in)){ arr[i]=i*k%SZ(in); if(in[i]=='.')in[i]=27; else if(in[i]=='_')in[i]=0; else in[i]-='a'-1; } string out; out.resize(SZ(in)); rep(i,SZ(in)){ out[arr[i]]=(in[i]+i)%28; } in=out; rep(i,SZ(in)){ if(in[i]==0)cout<<'_'; else if(in[i]==27)cout<<'.'; else cout<<char(in[i]+'a'-1); } cout<<endl; } }