讨论 / c++AC 贪心+高精乘单精
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里面……

查看更多回复
提交回复