社区讨论
80分求调,10和11过不了
P1249最大乘积参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhj9xxhy
- 此快照首次捕获于
- 2025/11/03 23:07 4 个月前
- 此快照最后确认于
- 2025/11/03 23:07 4 个月前
求求指点一下
本蒟蒻不会
呜呜呜
CPP#include<bits/stdc++.h>
using namespace std;
long long ans[11451419],len=1,s[114];//比较臭一点,s用来存拆开的各个数
void f(int x)//高精乘法
{
for(int i=1;i<=len;i++)
{
ans[i]*=x;
}
for(int i=1;i<=len;i++)
{
if(ans[i]>=10)
{
ans[i+1]=ans[i+1]+(ans[i]-(ans[i]%10))/10;
ans[i]=ans[i]%10;
if(i==len)
{
len++;
}
}
}
}
int main()
{
ans[1]=1;
long long n,sum=0,i;
cin>>n;
if(n==3)//特判3
{cout<<3<<endl<<3;
return 0;
}
if(n==4)//特判4
{cout<<4<<endl<<4;
return 0;
}
for(i=2;sum<=n;i++)//找大致在哪些数
{
s[i]=i;
sum+=i;
}
if(sum!=n)//微调,思路和题解一楼一样
{
if(sum-n==1)
{
s[2]=-1;
s[i-1]++;
}
else
s[sum-n]=-1;
}
for(int i=2;s[i]!=0;i++)//输出答案
{
if(s[i]==-1)
continue;
cout<<s[i]<<' ';
f(s[i]);
}
cout<<endl;
for(int i=len;i>=1;i--)
{
cout<<ans[i];
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...