记录编号 |
114642 |
评测结果 |
AAAAAAAAAA |
题目名称 |
最优分解方案II |
最终得分 |
100 |
用户昵称 |
return 0; |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.029 s |
提交时间 |
2014-07-31 20:16:32 |
内存使用 |
0.24 MiB |
显示代码纯文本
#include<cstdio>
int a[450],b[450],c[450],temp1,temp2,sum[450]={1,1},n=0;
inline void csh();
int main()
{
freopen("maxmul.in","r",stdin);
freopen("maxmul.out","w",stdout);
scanf("%d",&n);
csh();
}
inline void csh()
{
for(int i=2;i<=450;i++)
{
a[0]=1;
a[i]=a[i-1]+i+2;
b[i-1]=a[i]-i+3;
if(n<b[i-1])
{
temp1=n-b[i-2];
temp2=i-1;
break;
}
}
for(int i=temp2;i>=1;i--)
{
c[i]=i+1;
}
for(int i=1;i<=temp1;i++)
{
c[(temp2-i+1)]+=1;
}
for(int i=1;i<=temp2;i++)
{
printf("%d ",c[i]);
}
for(int i=1;i<=temp2;i++)
{
for(int j=1;j<=sum[0];j++) sum[j]*=c[i];
for(int j=1;j<=sum[0];j++)
{
if(sum[j]>=10000)
{
sum[j+1]+=sum[j]/10000;
sum[j]%=10000;
}
}
if(sum[sum[0]+1]) sum[0]++;
}
printf("%d",sum[sum[0]]);
for(int i=sum[0]-1;i>=1;i--)
printf("%04d",sum[i]);
}