答案
2025-10-19 21:38:46
发布于:福建
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
string s;
long long st;
int main() {
cin>>s;
int st;
cin>>st;
int len=s.size();
int a[len+1];
for(int i=0;i<len;i++)
a[i+1]=s[i]-65+st;//大写字母A的ASCLL码是65,注意看清是0代表A还是1代表A。
int k[100001],p=0;
for(int i=len;i>=1;i--)
while(a[i]>0)
{
p++;
k[p]=a[i]%10;
a[i]/=10;
}//倒序数位分离,因为倒序存储就可以不用写if了,注意一定要分离后才能进行下一步。
for(int i=p-1;i>=3;i--)//每一次剩下i位。
for(int j=1;j<=i;j++)
k[j]=(k[j]+k[j+1])%10;//这题的feature,每一次都可以这样建立一一对应关系
if(k[1]==0&&k[2]==0&&k[3]==1){cout<<100;return 0;}//这题只有100一个三位数,所以最后剩下三位,特判即可
if((k[2]+k[3])%10!=0)cout<<(k[2]+k[3])%10;//注意首位为0的情况,不输出0
cout<<(k[1]+k[2])%10;
return 0;
}
输入:LYJQSM
ST=1314
这里空空如也


有帮助,赞一个