| 比赛 | 
    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;
}