比赛 NOIP2015普及组练习 评测结果 AAAAAAAAAA
题目名称 Vigenère密码 最终得分 100
用户昵称 落尘 运行时间 0.007 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-11-03 18:21:34
显示代码纯文本
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdio>
using namespace std;
int N,M;
char S[1100];
char T[1100];
bool X[1100];
ifstream fin("vigenere.in");
ofstream fout("vigenere.out");
char CALC(int k){
	int c=int('a');
	if(int(T[k])-int(S[k])<0) c+=26;
	c+=(int(T[k])-int(S[k]));
	return char(c);
}
void INIT(){
	fin>>S>>T;
	N=strlen(S);
	M=strlen(T);
	for(int i=0;i<N;++i) if(S[i]>='A' && S[i]<='Z') S[i]+=('a'-'A');
	for(int i=N;i<M;++i) S[i]=S[i-N];
	for(int i=0;i<M;++i){
		if(T[i]>='A' && T[i]<='Z')
			T[i]+=('a'-'A'),X[i]=true;
		T[i]=CALC(i);
		if(X[i]) T[i]-=('a'-'A');
	}
	fout<<T<<endl;
}
int main(){
	INIT();
	fin.close();
	fout.close();
	return 0;
}