社区讨论
洛谷:最大乘积异常bug(玄关)
题目总版参与者 4已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lrlf4fb6
- 此快照首次捕获于
- 2024/01/20 09:55 2 年前
- 此快照最后确认于
- 2024/01/20 12:09 2 年前
求大佬挑错:
please,必关
CPP//策略:
//把n分解成2+....+k的形式,
//再把多余的部分分给前面,从后往前分
//用高精度计算所有数的乘积,
//共同输出
#include<bits/stdc++.h>
using namespace std;
int arr[10010],top;
int ans[1000000010];
void f(int a,int b)
{
if(a<b)
{
if(b==arr[top])
{
for(int i=1;i<=top;i++) arr[i]++;
arr[top]++;
}
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;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...