0
已解决
吕梓瑜
初级天翼
初级天翼
请问1063这哪里错了?为什么90分?
https://ke.codingtang.com/#/problem/problemSub?id=1063
#include<iostream>
using namespace std;
const int maxn=1010;
int n,tot,len,a[maxn],f[maxn];
void mul(int x)
{
for(int i=1;i<=len;i++)
f[i]=f[i]*x;
for(int i=1;i<=len;i++)
if(f[i]>9)
{
f[i+1]=f[i+1]+f[i]/10;
f[i]=f[i]%10;
}
while(f[len+1])
{
len++;
f[len+1]=f[len+1]+f[len]/10;
f[len]=f[len]%10;
}
}
int main()
{
cin>>n;
for(int i=2;i;i++)
{
if(n>=i)
a[++tot]=i,n=n-i;
else break;
}
while(n)
{
for(int i=tot;i>=1;i--)
if(n)
{
a[i]++;
n--;
}
else break;
}
len=1;f[1]=1;
for(int i=1;i<=tot;i++)
mul(a[i]);
for(int i=len;i>=1;i--)
cout<<f[i];
return 0;
}
请给出这样的伪代码:
或告诉我哪行哪里错了,改成什么,说思路
0
已采纳
汪宇航
新手启示者
新手启示者
输入文件中只有1个数n(其中1<=n<=1000)
???
我看不懂你的鸭
假如n=1000
将n分解为2、3、4、5、6、7、8、9、10、11、....
不说是最优,应该已超int了吧
改成long long试试
0
李奕歌
初级天翼
初级天翼
我也90
#include<iostream>
using namespace std;
const int maxn=1010;
int n,tot,len,a[maxn],f[maxn];
void mul(int x)
{
for(int i=1;i<=len;i++)
f[i]=f[i]*x;
for(int i=1;i<=len;i++)
if(f[i]>9)
{
f[i+1]=f[i+1]+f[i]/10;
f[i]=f[i]%10;
}
while(f[len+1])
{
len++;
f[len+1]=f[len+1]+f[len]/10;
f[len]=f[len]%10;
}
}
int main()
{
cin>>n;
for(int i=2;i;i++)
{
if(n>=i)
a[++tot]=i,n=n-i;
else break;
}
while(n)
{
for(int i=tot;i>=1;i--)
if(n)
{
a[i]++;
n--;
}
else break;
}
len=1;f[1]=1;
for(int i=1;i<=tot;i++)
mul(a[i]);
for(int i=len;i>=1;i--)
cout<<f[i];
return 0;
}
0
0
0