《万紫千红》0分蒟蒻求助
查看原帖
《万紫千红》0分蒟蒻求助
531258
Fishmaster楼主2021/8/15 20:29

四个WA,六个TLE,真就“万紫千红”呗! 真搞不懂我代码错哪了,求助大佬

#include<bits/stdc++.h>
using namespace std;
string num[10]={"0","1","2","3","4","5","6","7","8","9"};
string add(string a,string b){
	int x[100000]={0},y[100000]={0},sum[200000]={0};
	string s="";
	reverse(a.begin(),a.end());
	reverse(b.begin(),b.end());
	for(int i=0;i<a.length();i++){
		x[i]=a[i]-'0';
	}
	for(int i=0;i<b.length();i++){
		y[i]=b[i]-'0';
	}
	int len=max(a.length(),b.length());
	int flag=0;
	for(int i=0;i<len;i++){
		sum[i]=x[i]+y[i]+flag;
		if(sum[i]>=10){
			sum[i]-=10;
			flag=1;
		}else{
			flag=0;
		}
	}
	if(flag==1){
		s+="1";
	}
	for(int i=len-1;i>=0;i--){
		s+=num[sum[i]];
	}
	return s;
}
string sub(string aa){
	string aaa=aa;
	if(aa[aa.length()-1]>='1'){
		aaa[aa.length()-1]--;
	}else{
		aaa[aa.length()-1]+=9;
		aaa[aa.length()-2]--;
	}
	return aaa;
}
int main(){
	int p;
	cin>>p;
	string n="1";
	for(int i=1;i<=p;i++){
		n=add(n,n);
	}
	cout<<sub(n).length()<<endl;
	for(int i=500;i>sub(n).length();i--){
		cout<<"0";
	}
	cout<<sub(n);
	return 0;
}
2021/8/15 20:29
加载中...