NOIP2012 Vigenère 密码

来源:互联网 发布:淘宝新规定2017 编辑:程序博客网 时间:2024/05/18 02:21


上图大家看着是不是有些晕?
上图的转换其实非常简单
万能公式:

M=C-K+1 ,M<'A'  M+=26C=M+K-1 ,C>'Z'  C-=26

接着就是代码了(无视char*+string,开始没有string,后来因为%错了,就改为string存K)

#include<bits/stdc++.h>using namespace std;int i;char s1[2001];string s2;int main(){    cin>>s2;    for(i=0;i<s2.size();i++)        if(s2[i]<'a')s2[i]-='A';        else s2[i]-='a';    scanf("%s",&s1);    while(s2.size()<strlen(s1))s2+=s2;    for(i=0;i<strlen(s1);i++)        if(s1[i]<'a'){            s1[i]=s1[i]-s2[i];            if(s1[i]<'A')s1[i]+=26;        }        else{            s1[i]=s1[i]-s2[i];            if(s1[i]<'a')s1[i]+=26;        }    puts(s1);    return 0;}
1 0
原创粉丝点击