记录编号 |
571203 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[金陵中学2007] 最优分解方案 |
最终得分 |
100 |
用户昵称 |
op_组撒头屯 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2022-05-16 19:56:09 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll p=100000000;
ll n,num=0,ans=1,lst;
ll a[1000];
ll yi[100]={0,1};
int mx=1;
int main(){
freopen ("best.in","r",stdin);
freopen ("best.out","w",stdout);
scanf("%lld",&n);
for (ll i=2;num<=n;i++){
if (num+i>n)break;
num+=i;lst=i-1;
a[i-1]=i;
}
ll rest=n-num,jw=0;
while(rest!=0){
for (int i=lst;i>=1&&rest!=0;i--){
rest--;a[i]++;
}
}
for (int i=1;i<=lst;i++){
jw=0;
for (int j=1;j<=mx;j++){
yi[j]=yi[j]*a[i]+jw;
jw=yi[j]/p;
yi[j]%=p;
}
if (jw!=0){
mx++;yi[mx]=jw;
}
}
printf("%lld",yi[mx]);
for (int i=mx-1;i>=1;i--){
printf("%08lld",yi[i]);
}
return 0;
}