开始做NOIP啦。。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 1050 using namespace std; int map[30][30],len1,len2; char s1[maxn],s2[maxn]; void get_table() { for (int i=1;i<=26;i++) { map[i][i]=1; int p1=i-1,r=2; if (p1==0) p1=26; while (p1!=i) { map[i][p1]=r; p1--; if (p1==0) p1=26; r++; } } } int main() { get_table(); scanf("%s",s1); scanf("%s",s2); len1=strlen(s1);len2=strlen(s2); for (int i=0;i<len2;i++) { int p=i%len1,r1=s2[i],flag=0,r2=s1[p]; if (r1<=90) flag=1; if (r1<=90) r1-=64;else r1-=96; if (r2<=90) r2-=64;else r2-=96; int ans=map[r1][r2]; if (flag) printf("%c",64+ans); else printf("%c",96+ans); } return 0; }