[ 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 }