CODEFORCE 1144E 模拟26进制位数``
本题目给出两个字符串,要求求出中间的字符串,题目很简单,我们可以吧字符串看成26进制位数,所求的字符串就是他们俩个的和的一半,代码如下所示`
#include<algorithm>
using namespace std;
#include<string>
int a[200009];
int main()
{
ios::sync_with_stdio(false);
string s1,s2;
int n;
cin>>n;
cin>>s1>>s2;
int flag=0; //flag表示每一次是否要进位,如果要进位,则令flag=1,下一次操作的时候加上1,否则为0
for(int i=n-1;i>=0;i--){
int x1=s1[i]-'a';
int x2=s2[i]-'a';
a[i] = ( flag+x1+x2 )%26 ;
if(x1+x2+flag>25) flag=1;
else flag=0;
if(i==0) a[i] += flag*26; //注意算到第一位的时候不用再进位,
}
flag=0; //利用数组模拟除以2操作,从第一位开始,
for(int i=0;i<n;i++){ //此时flag表示是否要想下一位进1
int x = (flag*26+a[i])/2;
flag = ( flag*26+a[i])%2;
a[i] = x;
printf("%c",a[i]+'a');
}
}`