半江 TLE 半江红,0 pts 求条
查看原帖
半江 TLE 半江红,0 pts 求条
1145420
longyitongxue楼主2025/7/19 08:29

记录

#include<bits/stdc++.h>
using namespace std;
string mul(string x,string y){
    string ans;
    int a[1000005]={},b[1000005]={},c[2000005]={};
    int la=x.size(),lb=y.size();
    for(int i=1;i<=la;i++){
        a[i]=x[la-i]-'0';
    }
    for(int i=1;i<=lb;i++){
        b[i]=y[lb-i]-'0';
    }
    for(int i=1;i<=la;i++){
        for(int j=1;j<=lb;j++){
            c[i+j-1]+=a[i]*b[j];
        }
    }
    int lc=la+lb;
    for(int i=1;i<=lc;i++){
        c[i+1]+=c[i]/10;
        c[i]%=10;
    }
    while(c[lc]=='0'&&lc>1)lc--;
    for(int i=lc;i>=1;i--){
        ans.push_back(c[i]+'0');
    }
    return ans;
}
string qpow(long long p){
    string ans="1",a="2";
    while(p){
        if(p&1)ans=mul(ans,a);
        a=mul(a,a);
        p>>=1;
    }
    return ans;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr),cout.tie(nullptr);
    long long p;
    cin>>p;
    string s=qpow(p);
    cout<<int(log10(2)*p+1)<<'\n';
    if(s.size()<=500){
        int len=500-s.size();
        for(int i=1;i<=len;i++)s="0"+s;
    }else{
        s=s.substr(s.size()-500,500);
    }
    for(int i=0;i<s.size();i++){
        if(i&&i%50==0){
            cout<<'\n';
        }
        cout<<s[i];
    }
    return 0;
}
2025/7/19 08:29
加载中...