记录编号 |
298264 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2012]Vigenère密码 |
最终得分 |
100 |
用户昵称 |
蜗牛哲 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.052 s |
提交时间 |
2016-08-20 16:16:41 |
内存使用 |
0.25 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<climits>
#include<cmath>
#include<cstdlib>
#include<cctype>
#include<algorithm>
#include<set>
#include<deque>
#include<queue>
#include<string>
#include<map>
#include<stack>
#include<sstream>
#include<vector>
using namespace std;
//====================struct declaration=====================
//====================var declaration========================
const int maxn=1000+10;
char key[maxn],mi[maxn],ming[maxn];
bool f[maxn];
int lenkey,lenmi;
//====================function declaration===================
//====================main code==============================
int main()
{
freopen("vigenere.in","r",stdin);
freopen("vigenere.out","w",stdout);
cin>>key;
lenkey=strlen(key);
cin>>mi;
lenmi=strlen(mi);
for(int i=0; i<lenkey; i++)
{
if(key[i]>='A' && key[i]<='Z')
{
key[i]+=32;
}
}
for(int i=0; i<lenmi; i++)
{
if(mi[i]>='A' && mi[i]<='Z')
{
f[i]=true;
mi[i]+=32;
}
}
for(int i=lenkey; i<lenmi; i++)
{
key[i]=key[i%lenkey];
}
for(int i=0; i<lenmi; i++)
{
ming[i]=mi[i]-(key[i]-'a');
if(ming[i]<'a')
ming[i]+=26;
}
for(int i=0; i<lenmi; i++)
{
if(f[i])
cout<<char(ming[i]-32);
else
cout<<ming[i];
}
cout<<endl;
return 0;
}