蒟蒻只过了40%,剩下的TLE,救救!
查看原帖
蒟蒻只过了40%,剩下的TLE,救救!
770420
Cinq_qwq楼主2023/2/10 20:56
#include<bits/stdc++.h>
using namespace std;
struct big_num
{
	int num[10000]={0};
	int size;
};
big_num input(string a){
	big_num b;
	b.size=a.size();
	for(int i=a.size()-1,j=0;i>=0;i--,j++){
		b.num[j]=a[i]-'0';
	}
	return b;
}
void print(big_num a){
	for(int i=a.size-1;i>=0;i--){
		cout<<a.num[i];
	}
	cout<<endl;
}
void clear(big_num &a){
	for(int i=a.size-1;i>=1;i--){
		if(a.num[i]==0) a.size--;
		else break;
	}
}
big_num add(big_num a,big_num b){
	big_num c;
	int j=0;
	int m=max(a.size,b.size)+1;
	for(int i=0;i<=m;i++){
		c.num[i]=a.num[i]+b.num[i]+j;
		j=c.num[i]/10;
		c.num[i]=c.num[i]%10;
	}
	c.size=m;
	clear(c);
	return c;
}
big_num mul(big_num a,big_num b){
	big_num c;
	c.size=a.size+b.size+2;
	for(int i=0;i<a.size;i++){
		for(int j=0;j<b.size;j++){
			c.num[i+j]+=a.num[i]*b.num[j];
		}
	}
	int j=0;
	for(int i=0;i<c.size;i++){
		c.num[i]=c.num[i]+j;
		j=c.num[i]/10;
		c.num[i]=c.num[i]%10;
	}
	clear(c);
	return c;
}
big_num sum=input("0");
big_num tem=input("1");
void h(int n){
	if(n==1){
		sum=add(sum,tem);
	}
	else{
		h(n-1);
		sum=add(sum,tem);
		h(n-1);
	}
}
int main(){
	int n;
	cin>>n;
	h(n);
	sum=mul(sum,input("2"));
	print(sum);
	return 0;
}
2023/2/10 20:56
加载中...