求助!!用结构体模拟高精后
查看原帖
求助!!用结构体模拟高精后
310690
匿名等待楼主2022/7/2 16:46
#include<bits/stdc++.h>

using namespace std;
const int N=103;**此处数据为什么不可以改大一些?****


struct Bigint{
	
    int	a[N],len;
	Bigint(int x=0)
	{
		memset(a,0,sizeof(a));
		for(len=1;x;len++)
		a[len]=x%10,x/=10;
		len--;
	}
	int &operator[](int i){
		return a[i];
	}
	void flatten(int l){
		len=l;
		for(int i=1;i<=len;i++)
		a[i+1]+=a[i]/10,a[i]%=10;
		for(;!a[len];) len--;
	}
	
	void print(){
		for(int i=max(len,1);i>=1;i--)
		printf("%d",a[i]);
	}
	
};
 
Bigint operator+(Bigint a,Bigint b)
{
	Bigint c;
	
	int len=max(a.len,b.len);
	for(int i=1;i<=len;i++)
	c[i]+=a[i]+b[i];
	c.flatten(len+1);
	return c;
}

int main()
{
	int n;
	scanf("%d",&n);
	
	Bigint f[5010];
	f[1] = Bigint (1);
	f[2] = Bigint (2);
	
	for(int i=3;i<=n;i++){
		f[i]=f[i-2]+f[i-1];
	}
	f[n].print();
	
	return 0;	
 } 

数据点大一些(如500时),存储输出数据的数组不够,但是一改就会出问题,为什么?求助!!

2022/7/2 16:46
加载中...