ZOJ 1006 加密
2010-05-11 10:00
204 查看
//除余加密
//由于被除数与余数同余,而且均小于28,则相互mod相同
#include<iostream>
#include<string>
using namespace std;
char st[100],en[100];
int stnum[100],ennum[100];
int main()
{
int i,k,len,pos;
while(cin>>k && k!=0)
{
cin>>st;
len=strlen(st);
for(i=0;i<len;i++)
{
if(st[i]=='.')
stnum[i]=27;
else if(st[i]=='_')
stnum[i]=0;
else
stnum[i]=st[i]-'a'+1;
}
for(i=0;i<len;i++)
{
pos=(k*i)%len;
ennum[pos]=(stnum[i]+i)%28;
}
for(i=0;i<len;i++)
{
if(ennum[i]==27)
en[i]='.';
else if(ennum[i]==0)
en[i]='_';
else
en[i]=ennum[i]-1+'a';
}
for(i=0;i<len;i++)
cout<<en[i];
cout<<endl;
}
return 0;
}
//由于被除数与余数同余,而且均小于28,则相互mod相同
#include<iostream>
#include<string>
using namespace std;
char st[100],en[100];
int stnum[100],ennum[100];
int main()
{
int i,k,len,pos;
while(cin>>k && k!=0)
{
cin>>st;
len=strlen(st);
for(i=0;i<len;i++)
{
if(st[i]=='.')
stnum[i]=27;
else if(st[i]=='_')
stnum[i]=0;
else
stnum[i]=st[i]-'a'+1;
}
for(i=0;i<len;i++)
{
pos=(k*i)%len;
ennum[pos]=(stnum[i]+i)%28;
}
for(i=0;i<len;i++)
{
if(ennum[i]==27)
en[i]='.';
else if(ennum[i]==0)
en[i]='_';
else
en[i]=ennum[i]-1+'a';
}
for(i=0;i<len;i++)
cout<<en[i];
cout<<endl;
}
return 0;
}
相关文章推荐
- ZOJ 1006 Do the Untwist 加密解密 模拟
- 九度考研真题 浙大 2010-2浙大1006:ZOJ问题
- zoj问题 九度1006&&hdu3788(字符串)
- 题目1006:ZOJ问题
- 九度OJ 1006 ZOJ问题 (这题測试数据有问题)
- ZOJ Problem Set - 1006 Do the Untwist
- zoj 1006
- 九度 题目1006:ZOJ问题
- zoj 1006 Do the Untwist
- 1006 ZOJ问题 九度Online Judge
- 九度OJ 1006 ZOJ问题
- 水水 zoj 1099 水水水zoj 1006 && zoj 1365
- 题目1006:ZOJ问题
- zju 1006 zoj 1006
- ZOJ 1006 Do the Untwist
- 九度oj 题目1006:ZOJ问题 【ZJU2010考研机试题2】【容易理解混乱】
- 九度OJ--1006-ZOJ问题
- ●BZOJ 1006 [HNOI2008]神奇的国度(弦图最小染色数)○ZOJ 1015 Fishing Net
- 九度1006 ZOJ问题 浙大考研机试题
- 题目1006:ZOJ问题