记录编号 571203 评测结果 AAAAAAAAAA
题目名称 [金陵中学2007] 最优分解方案 最终得分 100
用户昵称 Gravatarop_组撒头屯 是否通过 通过
代码语言 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;
}