记录编号 175888 评测结果 AAAAAAAAAA
题目名称 [NOIP 2012]Vigenère密码 最终得分 100
用户昵称 GravatarSatoshi 是否通过 通过
代码语言 C++ 运行时间 0.019 s
提交时间 2015-08-07 13:39:00 内存使用 0.28 MiB
显示代码纯文本
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
ifstream in("vigenere.in");
ofstream out("vigenere.out");
string a,b;
bool l[1001]={0};
char c[1001]={0};
int main()
{
	int i,j,n,m;
	in>>b>>a;
	n=a.length();
	m=b.length();
	for(i=0;i<n;i++)
	{
		if(a[i]>='A'&&a[i]<='Z')l[i]=1;
		else 
		{
			a[i]+='A'-'a';
			l[i]=0;
		}
		//out<<a[i];
	}
	//out<<endl;
	for(i=0;i<m;i++)
	{
		if(b[i]>='A'&&b[i]<='Z')i=i;
		else 
		{
			b[i]+='A'-'a';
		}
	}
	for(i=0;i<n;i++)
	{
		j=i%m;
		if(a[i]>=b[j])c[i]=abs(a[i]-b[j])+'A';
		else c[i]=char(26-(b[j]-a[i])+'A');
		if(!l[i])c[i]+='a'-'A';
		out<<c[i];
	}
	//out<<endl;
	//for(i=0;i<n;i++)out<<c[i];
	//out<<'C'+'Y'-'A';
	return 0;
}