为什么最后一个点错了
查看原帖
为什么最后一个点错了
215806
GodMan、、楼主2020/10/7 11:57
#include<bits/stdc++.h>
using namespace std;
int f[100000]={};
int sum[3000]={0,1};
int main()
{
	int m;cin>>m;
	int k=1;
	int len3=1;
	if(1){
		int i=2;
		while(1)
		{
			if(m>i)
			m-=i;
			else 
			break;
			f[k]=i;
			i++;
			k++;
		}	
	}
	if(1){
		int x=k-1;
		while(m>0)
		{
			m--;
			f[x]++;
			x--;
		}	
	}
	for(int j=1;j<=k-1;j++){
		cout<<f[j]<<' ';
		int ans[2000]={0};
		int len1=len3;
		int len2=0,x=f[j];
		int g[1000]={};
		while(x>0){
			len2++;
			g[len2]=x%10;
			x/=10;	
		}
		for(int i=1;i<=len1;i++){
			x=0;	
			for(int p=1;p<=len2;p++){
				ans[i+p-1]=sum[i]*g[p]+x+ans[i+p-1];
				x=ans[i+p-1]/10;
				ans[i+p-1]%=10;
			}
			ans[i+len2]=x;
		}
		len3=len1+len2;	
		while(ans[len3]==0&&len3>1)
		len3--;
		for(int o=1;o<=len3;o++)
		sum[o]=ans[o];
	}
	cout<<endl;
	for(int i=len3;i>=1;i--)
		cout<<sum[i];	
	return 0;
}

//求大佬找一下bug,老是最后一个点过不了

2020/10/7 11:57
加载中...