题目
传送门
Sample Input 1 EWPGAJRB Sample Output 1 ABCD Sample Input 2 UEQBJPJCBUDGBNKCAHXCVERXUCVK Sample Output 2 ACMECNACONTEST
题意:给出一个字符串执行以下三步操作 1:把字符串分为前后相等的两部分 2:把前一半的价值相加,每一个字符都加上这个价值得到另一个字符.后一半进行同样操作 3 把前一半的每个字符分别加上后一半的对应字符的价值得到新的串
AC code
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<sstream>
#include<queue>
#include<stack>
using namespace std
;
int main()
{
ios
::sync_with_stdio(0);
char a
[20000],b
[30];
for(int i
='A';i
<='Z';i
++)
b
[i
-'A']=i
;
cin
>>a
;
int k
=strlen(a
),sum
=0,sum1
=0,kk
=k
/2;
for(int i
=0;i
<kk
;i
++)
{
sum
+=a
[i
]-'A';
}
for(int i
=0;i
<kk
;i
++)
{
int o
=(a
[i
]-'A'+sum
)%26;
a
[i
]=b
[o
];
}
for(int i
=kk
;i
<k
;i
++)
{
sum1
+=a
[i
]-'A';
}
for(int i
=kk
;i
<k
;i
++)
{
int o
=(a
[i
]-'A'+sum1
)%26;
a
[i
]=b
[o
];
}
for(int i
=0;i
<kk
;i
++)
{
int o
=(a
[i
]-'A'+a
[i
+kk
]-'A')%26;
a
[i
]=b
[o
];
}
for(int i
=0;i
<kk
;i
++)
printf("%c",a
[i
]);
printf("\n");
}