ZOJ1009 Enigma
2010-10-01 12:01
288 查看
#include<iostream>
using namespace std;
#include<string>
int rotor[3][26];
int rround[3];
int m;
void nextstep()
{
rround[0]++;
if(rround[0]%m==0){
rround[1]++;
rround[0]=0;
if(rround[1]%m==0){
rround[2]++;
rround[2]%=m;
rround[1]=0;
}
}
}
void resolve(char ch)
{
int num=ch-'A';
for(int i=2;i>=0;i--){
num+=rotor[i][(num-rround[i]+m)%m];
num=(num+m)%m;
}
cout<<(char)('a'+num);
}
int main()
{
int num;
string curline;
int i,j;
int ncase=1;
while(cin>>m && m!=0){
//完成对三个rotor开始状态的初始化
memset(rotor,0,sizeof(rotor));
for(i=0;i<3;i++){
cin>>curline;
for(j=0;j<m;j++){
rotor[i][curline[j]-'A']=j-(curline[j]-'A');
}
}
//特别注意下面cout<<"Enigma "<<ncase++<<":"<<endl;一定要放在此处
//不可以放到下面的for循环中
if(ncase!=1)
cout<<endl;
cin>>num;
cout<<"Enigma "<<ncase++<<":"<<endl;
for(i=1;i<=num;i++){
memset(rround,0,sizeof(rround));
cin>>curline;
for(j=0;curline[j]!='/0';j++){
resolve(curline[j]);
nextstep();
}
cout<<endl;
}
}
return 0;
}
using namespace std;
#include<string>
int rotor[3][26];
int rround[3];
int m;
void nextstep()
{
rround[0]++;
if(rround[0]%m==0){
rround[1]++;
rround[0]=0;
if(rround[1]%m==0){
rround[2]++;
rround[2]%=m;
rround[1]=0;
}
}
}
void resolve(char ch)
{
int num=ch-'A';
for(int i=2;i>=0;i--){
num+=rotor[i][(num-rround[i]+m)%m];
num=(num+m)%m;
}
cout<<(char)('a'+num);
}
int main()
{
int num;
string curline;
int i,j;
int ncase=1;
while(cin>>m && m!=0){
//完成对三个rotor开始状态的初始化
memset(rotor,0,sizeof(rotor));
for(i=0;i<3;i++){
cin>>curline;
for(j=0;j<m;j++){
rotor[i][curline[j]-'A']=j-(curline[j]-'A');
}
}
//特别注意下面cout<<"Enigma "<<ncase++<<":"<<endl;一定要放在此处
//不可以放到下面的for循环中
if(ncase!=1)
cout<<endl;
cin>>num;
cout<<"Enigma "<<ncase++<<":"<<endl;
for(i=1;i<=num;i++){
memset(rround,0,sizeof(rround));
cin>>curline;
for(j=0;curline[j]!='/0';j++){
resolve(curline[j]);
nextstep();
}
cout<<endl;
}
}
return 0;
}
相关文章推荐
- [ZOJ 1009] Enigma (模拟)
- zoj&nbsp;1009&nbsp;enigma
- ZOJ 1009 Enigma
- ZOJ 1009 Enigma
- ZOJ 1009 Enigma
- Zoj 1009 Enigma
- zoj 1009 Enigma (模拟)
- ZOJ Problem Set - 1009 Enigma(待想通)
- 浙大ZOJ 1009 Enigma问题解决及别人的解决方案
- ZOJ--1009:Enigma
- ZOJ1009 Enigma
- ZOJ1009 Enigma
- ZOJ 1009 转子加密
- POJ 1449 & ZOJ 1036 Enigma(简单枚举)
- ZOJ 1009, 1115, 1476, 1733, 2405 解题报告
- ZOJ Problem Set - 1009
- zoj上面的题1009~~~~
- ZOJ1009解题报告
- ZOJ1009
- zoj 2109 || hdoj1009 FatMouse' Trade(贪心)