zoj 1006 Do the Untwist
题目意思是给你密文,要你输出明文
给你明文加密成密文方法:ciphercode[i] = (plaincode[ki mod n] - i) mod 28.
可以得出plaincode[ki mod n]= ( ciphercode[i] + i) mod 28.
[cpp]
#include<stdio.h>
#include<string.h>
char s[305];
int a[305],b[305];
int main()
{
int l,i,k;
while(scanf("%d",&k),k)
{
scanf("%s",s);
l=strlen(s);
for(i=0;i<l;i++)
if(s[i]=='_')a[i]=0;
else
if(s[i]=='.')a[i]=27;
else
a[i]=s[i]-'a'+1;
for(i=0;i<l;i++)b[i*k%l]=(a[i]+i)%28;
for(i=0;i<l;i++)if(!b[i])printf("_");
else
if(b[i]==27)printf(".");
else
printf("%c",b[i]+'a'-1);
printf("\n");
}
return 0;
}
补充:软件开发 , C++ ,