记录编号 309960 评测结果 AAAAAAAAAA
题目名称 [NOIP 2012]Vigenère密码 最终得分 100
用户昵称 Gravatar甘罗 是否通过 通过
代码语言 C++ 运行时间 0.065 s
提交时间 2016-09-20 21:44:01 内存使用 0.27 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;

int i,j;
int b[210],a[55][55];
char key[110],c[1010];

int main(){
	freopen("vigenere.in","r",stdin);
	freopen("vigenere.out","w",stdout);
	for (i=1;i<=26;i++)
		for (j=1;j<=26;j++)
			{a[i][j]=(j+1-i+26)%26; if (a[i][j]==0) a[i][j]=26;}
	for (i=65;i<=90;i++)	b[i]=64;
	for (i=97;i<=122;i++)	b[i]=96;
	scanf("%s%s",&key,&c);
	for (i=0;i<strlen(c);i++){
		int t=a[key[i%strlen(key)]-b[key[i%strlen(key)]]][c[i]-b[c[i]]];
		if (c[i]>=97)	putchar(t+96);	else putchar(t+64);
	}
	return 0;
}