码迷,mamicode.com
首页 > 其他好文 > 详细

【NOIP】提高组2012 vigenere密码

时间:2016-08-14 10:15:23      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

【算法】模拟

技术分享
#include<cstdio>
#include<cstring>
const int maxm=1010;
char sm[maxm],key[maxm],s[maxm];
int len,lenk;
bool isbig(char c)
{return c>=A&&c<=Z;}
int main()
{
    scanf("%s",key);scanf("%s",sm);
    len=strlen(sm);lenk=strlen(key);
    for(int i=lenk;i<len;i++)key[i]=key[i%lenk];
    for(int i=0;i<len;i++)
     {
         int a=isbig(sm[i])?sm[i]-A:sm[i]-a;
         int b=isbig(key[i])?key[i]-A:key[i]-a;
         if(a<b)a+=26;
         s[i]=isbig(sm[i])?(a-b)+A:(a-b)+a;
     }
    printf("%s",s);
    return 0;
}
View Code

 

【NOIP】提高组2012 vigenere密码

标签:

原文地址:http://www.cnblogs.com/onioncyc/p/5769497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!