求助
查看原帖
求助
372930
小鸡崽楼主2020/10/6 10:17

为什么高精度出问题了?

#include<bits/stdc++.h>
using namespace std;
int n,h,s,a[505],x[10005],len=1;
int main(){
	cin>>n;
	s=sqrt(2*n);
	h=(s+1)*s/2-1;
	if(h<n)
	{
		s++;
		h=h+s;
	}
	for(int i=2;i<=s;i++)
	{
		a[i]=1;
	}
	if(h-n==1)
	{
		a[2]=0;
		a[s++]=0;
		a[s]=1;
	}
	else
	{
		a[h-n]=0;
	}
	x[1]=1;
	for(int i=2;i<=s;i++)
	{
		if(a[i]>0)
		{
			cout<<i<<" ";
			for(int j=1;j<=len;j++)
			{
				x[j]=x[j]*i;
			}
			for(int j=1;j<=len;j++)
			{
				x[j+1]+=x[j]/10;
				x[j]=x[j]%10;
			}
			while(x[len+1]>0)
			{
				x[len+1]+=x[len]/10;
				x[len]=x[len]%10;
				len++;
			}
		}
	}
	cout<<endl;
	for(int i=len;i>=1;i--)
	{
		cout<<x[i];
	}
	return 0;
}
2020/10/6 10:17
加载中...