如题,自己把测试点 1 的数据下载了过来,套进我的程序,输出的的确是 STEP=4
。为啥一上交就全 WA 呢,求助大佬。。。
#include<iostream>
#include<string>
using namespace std;
typedef long long ll;
struct big{
string num;
ll jz;
big(){num="";}
void input(){cin>>jz>>num;}
void output(){for(ll i=0;i<num.length();i++)cout<<num[i];}
bool hw(){for(ll l=0,r=num.length()-1;l<r;l++,r--)if(num[l]!=num[r])return false;return true;}
};
big rev(big n){for(ll l=0,r=n.num.length()-1;l<r;l++,r--)swap(n.num[l],n.num[r]);return n;}
big operator+(big a,big b){
big ans;a=rev(a);b=rev(b);
if(a.num.length()<b.num.length())swap(a,b);
ll jw=0;
for(ll i=0;i<a.num.length();i++){
ll tmp=a.num[i]+(i>=b.num.length()?0:b.num[i]-48)-48;
ans.num+=(tmp+jw)%a.jz+48;
jw=(tmp+jw)/a.jz;
}
if(jw)ans.num+=jw+48;
ans=rev(ans);
return ans;
}
big n,m,tmp;
ll ans=0;
int main(){
n.input();
while(true){
tmp=rev(n);
m=n+tmp;
ans+=1;
if(m.hw() or ans>=30)break;
n=m;
m=big();
}
if(ans<30)cout<<"STEP="<<ans;
else cout<<"Impossible!";
return 0;
}