qqq123456qqq @ 2024-03-16 20:45:30
#include<stdio.h>
#include<string.h>
char sa[100000];
int a[100000],b[100000],c[100000],qa,q,u,e;
int main(){
int w;
scanf("%d%s",&w,&sa);
qa=strlen(sa);
for(int i=1;i<=qa;i++){
if(sa[qa-i]>='A'&&sa[qa-i]<='Z') a[i]=sa[i]-'A'+10;
else a[i]=sa[qa-i]-'0';
//printf("%d ",a[i]);
}
for(int i=1;i<=30;i++){
for(int j=1;j<=qa;j++) b[i]=a[qa-i+1];
for(int j=1;j<=qa;j++){
c[j]=(a[j]+b[j]+q)%w;
q=(a[j]+b[j]+q)/w;
}
for(int j=1;j<=qa;j++){
a[j]=c[j];
}
e++;
for(int j=1;j<=qa;j++){
if(a[j]==a[qa-j+1]) u=2;
else{
u=1;
break;
}
}
q=0;
if(u==2) break;
}
if(e>=30) printf("Impossible!");
else printf("STEP=%d",e);
return 0;
}
by FYH666666 @ 2024-03-24 13:12:52
@qqq123456qqq 1.进制要么10进制以内要么16进制 2.strlen是从0开始计数的,所以你的for循环边界有误 3.建议换个思路重写
by qqq123456qqq @ 2024-03-26 21:42:36
谢谢