您的位置:首页 > 其它

ZOJ 1006

2015-04-05 14:37 477 查看
就是利用公式反向求解,主要是mod的处理!

<span style="font-size:18px;">#include<stdio.h>
#include<string.h>

int get_plaincode(int ciphercode,int i);

int main()
{
int k;
scanf("%d",&k);
while(k!=0)
{
char str[71],string[71];
int len,i,j;
int ciphercode,plaincode;
scanf("%s",str);
len = strlen(str);
for(i = 0;i < len;i++)
{
j = (k * i) % len;
ciphercode = str[i] - 96;
if(str[i]=='_')
{
ciphercode = 0;
}
if(str[i]=='.')
{
ciphercode = 27;
}
plaincode = get_plaincode(ciphercode,i);
if(plaincode==0)
{
string[j] = '_';
}
else if(plaincode==27)
{
string[j] = '.';
}
else
{
string[j] = plaincode + 96;
}
}
string[len] = '\0';
puts(string);
scanf("%d",&k);
}
return 0;
}

int get_plaincode(int ciphercode,int i)    //对mod处理
{
int t = ciphercode + i;
if(t < 0)
{
while(t < 0)
{
t += 28;
}
}
else if(t > 27)
{
while(t > 27)
{
t-=28;
}
}
return t;
}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: