比赛 2012Day1 评测结果 AAAAAAAAAA
题目名称 Vigenère密码 最终得分 100
用户昵称 /k 运行时间 0.003 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-10-22 20:14:40
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
string m;
int k[110];
int c[1010];
int s[1010];
bool b[1010];
int main()
{
freopen("vigenere.in","r",stdin);
freopen("vigenere.out","w",stdout);
	cin>>m;
	int kk=m.size();
	for(int i=0;i<kk;i++)
	{
		k[i]=m[i];
	    if(m[i]<95)
			k[i]+=32;
		k[i]-='a';
	}
	cin>>m;
	int cc=m.size();
	for(int i=0;i<cc;i++)
	{
		c[i]=m[i];
	    if(m[i]<95)
		{
			c[i]+=32;
			b[i]=1;
		}
		c[i]-='a';
	}
	for(int i=0;i<cc;i++)
	{
		int p=i%kk;
		int aa=c[i],bb=k[p];
		int r=(aa-bb+26)%26;
		s[i]=r+'a';
		if(b[i])
		    s[i]-=32;
	}
	for(int i=0;i<cc;i++)
	{
		char d=s[i];
	    cout<<d;
	}
	getchar();
	getchar();
}