STARSczy @ 2023-03-15 20:48:30
rt
#include<bits/stdc++.h>
using namespace std;
int a[1000],b[1000],len,k;
bool f(){
for(int i=1;i<=len/2;++i) if(a[i]!=a[len-i]) return 0;
return 1;
}
signed main(){
scanf("%d\n",&k);
for(;1;){
char c=getchar();
++len;
if(c=='\n') break;
else if(c>='0'&&c<='9') a[len]=c-'0';
else a[len]=c-'A'+10;
}
for(int i=1;i<=len/2;++i) swap(a[i],a[len-i]);
if(f()){
printf("STEP=0");
return 0;
}
for(int s=1;s<=30;++s){
memset(b,0,500);
for(int i=1;i<len;++i) b[i]=a[len-i];
for(int i=1;i<len;++i){
if(a[i]+b[i]>=k){
if(i+1==len) ++len,a[i+1]=0;
a[i+1]+=((a[i]+b[i])/k);
}
a[i]=(a[i]+b[i])%k;
}
if(f()){
printf("STEP=%d",s);
return 0;
}
}
printf("Impossible!");
return 0;
}
by Eleveslaine @ 2023-03-15 20:49:30
@AIDczy 能不能换个头像,大晚上看着挺瘆人的。
by MuLinnnnn @ 2023-03-15 20:54:26
@Franz_Liszt
by Eleveslaine @ 2023-03-15 20:57:29
@bj12z_dingbolin ?只是一个建议
by MuLinnnnn @ 2023-03-15 21:04:21
@Franz_Liszt 好吧
by smallpeter @ 2023-03-15 22:14:25
@AIDczy 很多问题,我一个一个说吧。首先这题数据可能多了一些什么空格换行之类的,所以你这个输入是有问题的。其次,你的第二步是把输入的
经过修改后的代码如下:
#include<bits/stdc++.h>
using namespace std;
char c[1000];
int a[1000],b[1000],len,k;
bool f(){
for(int i=1;i<=len/2;++i) if(a[i]!=a[len-i+1]) return 0;
return 1;
}
signed main(){
scanf("%d",&k);
cin>>c+1;
len=strlen(c+1);
for(int i=1;i<=len;i++){
if(c[i]>='0'&&c[i]<='9') a[i]=c[i]-'0';
else a[i]=c[i]-'A'+10;
}
for(int i=1;i<=len/2;++i) swap(a[i],a[len-i+1]);
if(f()){
printf("STEP=0");
return 0;
}
for(int s=1;s<=30;++s){
memset(b,0,500);
for(int i=1;i<=len;++i) b[i]=a[len-i+1];
for(int i=1;i<=len;++i){
if(a[i]+b[i]>=k){
if(i==len) ++len,a[len]=0;
}
a[i+1]+=((a[i]+b[i])/k);
a[i]=(a[i]+b[i])%k;
}
if(f()){
printf("STEP=%d",s);
return 0;
}
}
printf("Impossible!");
return 0;
}
by beifa @ 2023-03-15 22:25:34
@small_peter 支持