比赛 20121121 评测结果 AAAAAAAAAA
题目名称 Vigenère密码 最终得分 100
用户昵称 cstdio 运行时间 0.003 s
代码语言 C++ 内存使用 3.16 MiB
提交时间 2012-11-21 19:14:35
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char key[101]={0},letter[1001]={0};
int lk,ll;
void dealkey(void){
	for(int i=0;i<lk;i++){
		if('A'<=key[i]&&key[i]<='Z') key[i]+=('a'-'A');
		key[i]-='a';
	}
}
void work(void){
	int p=0,i,temp,x;
	for(i=0;i<ll;i++){
		if('a'<=letter[i]&&letter[i]<='z') x=letter[i]-'a';
		else x=letter[i]-'A';
		temp=x-key[p];
		if(temp<0) temp+=26;
		letter[i]+=(temp-x);
		p++,p%=lk;
	}
}
int main(){
	freopen("vigenere.in","r",stdin);
	freopen("vigenere.out","w",stdout);
	scanf("%s%s",key,letter);
	lk=strlen(key),ll=strlen(letter);
	dealkey();
	work();
	printf("%s",letter);
	return 0;
}