只能在windows上运行
查看原帖
只能在windows上运行
575655
Chtholly_is_cute楼主2023/9/20 20:08

code:

#include<bits/stdc++.h>
using namespace std;
struct bigint{
	int len;
	int a[5000];
};
void set1(bigint &a,bigint b){
	a.len=b.len;
	memset(a.a,0,sizeof(a.a));
	for(int i=1;i<=a.len;i++){
		a.a[i]=b.a[i];
	}
}
void set2(bigint &a,int b){
	a.len=0;
	memset(a.a,0,sizeof(a.a));
	while(b){
		a.a[++a.len]=b%10;
		b/=10;
	}
}
void set3(bigint &a,string b){
	a.len=b.size();
	memset(a.a,0,sizeof(a.a));
	for(int i=1;i<=a.len;i++){
		a.a[i]=b[a.len-i]-'0';
	}
}
void print(bigint k){
	if(k.len==0){
		cout<<0;
		return;
	}
	for(int i=k.len;i>=1;i--){
		cout<<k.a[i];
	}
}
bigint add(bigint a,bigint b){
	bigint res;
	res.len=0;
	int jw=0;
	while(res.len<=a.len||res.len<=b.len){
		res.a[++res.len]=a.a[res.len]+b.a[res.len]+jw;
		jw=res.a[res.len]/10;
		res.a[res.len]%=10;
	}
	res.a[++res.len]=jw;
	while(res.len>=1&&res.a[res.len]==0)--res.len;
	return res;
}
int main(){
	int n;
	cin>>n;
	bigint a,b,c;
	if(n==1)cout<<0;
	else if(n==2)cout<<1;
	else if(n==3)cout<<2;
	else{
		set2(a,1);
		set2(b,2);
		for(int i=3;i<=n;i++){
			set1(c,add(a,b));
			set1(a,b);
			set1(b,c);
		}
		print(c);
	}
}
2023/9/20 20:08
加载中...