首页 > 代码库 > [ CodeVS冲杯之路 ] P1197

[ CodeVS冲杯之路 ] P1197

  不充钱,你怎么AC?

  题目:http://codevs.cn/problem/1197/

 

  密钥的字母可以全转换为小写字母,然后一一映射,a→0,b→1,c→2,依此类推

  对于密文只需将每一位减去对应密钥的映射,如果小于 a 或 A 则再将它加上 26 即可

 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 #include<iostream> 6 #include<algorithm> 7 using namespace std; 8  9 int a[101];10 int main()11 {12     int m=-1,i=0;13     bool f;14     char ch=getchar();15     while (ch!=\n)16     {17         if (ch<a) ch+=32;18         a[++m]=ch-a;19         ch=getchar();20     }21     ch=getchar();22     while (ch!=\n)23     {24         f=ch>Z;25         ch-=a[i++];26         if (i>m) i=0;27         if ((f&&ch<a)||((!f)&&ch<A)) ch+=26;28         putchar(ch);29         ch=getchar();30     }31     return 0;32 }

 

[ CodeVS冲杯之路 ] P1197