求助,下载数据点本地测试完全一致,上传后爆0
查看原帖
求助,下载数据点本地测试完全一致,上传后爆0
540148
Universal_xtr楼主2021/8/30 15:17

如题,自己把测试点 11 的数据下载了过来,套进我的程序,输出的的确是 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;
}
2021/8/30 15:17
加载中...