| 比赛 | 
    NOIP2015普及组练习 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    Vigenère密码 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    /k | 
    运行时间 | 
    0.012 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.26 MiB  | 
    | 提交时间 | 
    2015-11-03 16:25:42 | 
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
string m;
int k[110];
int c[1010];
int s[1010];
bool b[1010];
int main()
{
freopen("vigenere.in","r",stdin);
freopen("vigenere.out","w",stdout);
	cin>>m;
	int kk=m.size();
	for(int i=0;i<kk;i++)
	{
		k[i]=m[i];
	    if(m[i]<95)
			k[i]+=32;
		k[i]-='a';
	}
	cin>>m;
	int cc=m.size();
	for(int i=0;i<cc;i++)
	{
		c[i]=m[i];
	    if(m[i]<95)
		{
			c[i]+=32;
			b[i]=1;
		}
		c[i]-='a';
	}
	for(int i=0;i<cc;i++)
	{
		int p=i%kk;
		int aa=c[i],bb=k[p];
		int r=(aa-bb+26)%26;
		s[i]=r+'a';
		if(b[i])
		    s[i]-=32;
	}
	for(int i=0;i<cc;i++)
	{
		char d=s[i];
	    cout<<d;
	}
	getchar();
	getchar();
}