比赛 2012Day1 评测结果 AAAAAAAAAA
题目名称 Vigenère密码 最终得分 100
用户昵称 liuliuliu 运行时间 0.009 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-10-22 19:22:06
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using  namespace std;

char c[1005],m[1005],k[105];//c是密文,m是明文,k是钥匙 
int p;
int main()
{
	freopen("vigenere.in","r",stdin);
	freopen("vigenere.out","w",stdout);
	gets(k);
	
	int lenk=strlen(k);
	for(int i=0;i<lenk; i++)
	{
		if(k[i]>='a')
			k[i]-=32;
	}
	
	gets(c);
	int lenc=strlen(c);
	for(int i=0;i<lenc;i++)
	{
		if(c[i]<=90)
		{
			m[i]=c[i]-k[p]+'A';
			p=(p+1)%lenk;
			if(m[i]<65)
				m[i]+=26;
		}
		else
		{
			m[i]=c[i]-k[p]+'A';
			p=(p+1)%lenk;
			
			if(m[i]<97)
				m[i]+=26;
		}
		cout<<m[i];
	}
	cout<<endl;
	return 0;
}