比赛 NOIP2015普及组练习 评测结果 AAAAAAAAAA
题目名称 Vigenère密码 最终得分 100
用户昵称 lingyixiaoyao 运行时间 0.010 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2015-11-04 13:05:44
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;

char s1[1001],s2[10001],s3[10001],s4[10001],s5[10010];//s1是密钥
					  //s2是密文	  
int len2,len1; 

int main()
{
	freopen("vigenere.in","r",stdin);
	freopen("vigenere.out","w",stdout);
	gets(s1);gets(s2);
	strcpy(s4,s1);
	strcpy(s5,s2);
	len1=strlen(s1);len2=strlen(s2);
	int i=0,j=0;
	while(j<=len2)
	{
		if(s1[i]>='a' && s1[i]<='z')
		{
			s1[i]=s1[i]-32;
		}
		if(s2[j]>='a' && s2[j]<='z')
		{
			s2[j]=s2[j]-32;
		}
		if(s2[j]-65>=s1[i]-65)
		{
			s3[j]=(s2[j]-65-(s1[i]-65))+'A';
		}
		else
		{
			s3[j]=90-(s1[i]-65-(s2[j]-65))+1;
		}
		j++;i++;
		if(i==len1)
		{
			i=0;
		}
	}
	for(int i=0;i<len2;i++)
	{
	//	
		s3[i]=s3[i]+32;
		if(/*s4[i]>=65 && s4[i]<=90)*/ s5[i]>=65 && s5[i]<=90)
		{
			s3[i]=s3[i]-32;
		}
		cout<<s3[i];
	}
	return 0;
}