改完了,c++运行也对了,你谷说我编译失败???
  • 板块题目总版
  • 楼主Simon_xue
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/1/20 10:15
  • 上次更新2024/1/20 12:56:48
查看原帖
改完了,c++运行也对了,你谷说我编译失败???
994212
Simon_xue楼主2024/1/20 10:15

再求大家帮我一下

//策略:
//把n分解成2+....+k的形式,
//再把多余的部分分给前面,从后往前分
//用高精度计算所有数的乘积,
//共同输出
#include<bits/stdc++.h>
using namespace std;
int arr[10010],top;
int ans[10000010]={0,1};
void f(int a,int b)
{
	if(a<b)
	{
		if(b==arr[top])
		{
			for(int i=1;i<=top;i++) arr[i]++;
			arr[top]++;
		}
		else
		{
			for(int i=top;a!=0;i--) arr[i]++,a--;
		} 
		return ;
	}
	arr[++top]=b;
	f(a-b,b+1);
}
int main()
{
	int n;
	cin>>n;
	if(n==3) {cout<<1<<" "<<2<<endl<<2;return 0;}
	if(n==4) {cout<<1<<" "<<3<<endl<<3;return 0;}
	f(n,2);
	for(int i=1;i<=top;i++)cout<<arr[i]<<" ";
	cout<<endl;
	int len=1000;
	for(int i=1;i<=top;i++)
	{
		for(int j=1;j<=1000;j++) ans[j]*=arr[i];
		for(int j=1;j<=1000;j++) ans[j+1]+=ans[j]/10,ans[j]%=10;
	}
//	for(int i=1;i<=n;i++)
//	{
//		cout<<arr[i]<<" ";	
//	}
	while(ans[len]==0) len--;
	for(int i=len;i>=1;i--) cout<<ans[i];
	return 0;
}
2024/1/20 10:15
加载中...