lawrence2004 2017-09-09 23:32:55
点我顶贴
收藏
删除
#include<cstdio>
int n,m,k;
int a[1010],f[1010];
void cf(int x)
{
for(int i=1;i<=k;i++)f[i]*=x;
for(int i=1;i<=k;i++)
{
if(f[i]>=10)
{
f[i+1]+=f[i]/10;
f[i]%=10;
if(i==k)k++;
}
}
while(f[k]==0&&k>1)k--;
}
int main()
{
scanf("%d",&n);
m=0;
for(int i=2;i;i++)
{
if(n>=i){a[++m]=i;n-=i;}
else break;
}
while(n)
{
for(int i=m;i>=1;i--)
{
if(n){a[i]++;n--;}
else break;
}
}
k=1;f[1]=1;
for(int i=1;i<=m;i++)cf(a[i]);
for(int i=k;i>=1;i--)printf("%d",f[i]);
return 0;
}
刚刚尴尬了,发题解发到了343里面……