记录编号 |
84831 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[金陵中学2007] 最优分解方案 |
最终得分 |
100 |
用户昵称 |
cstdio |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2013-12-20 20:59:26 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<iomanip>
using namespace std;
const int SIZEL=201;
class HPINT{
public:
int len;
int s[SIZEL];
void clear(void){
len=1;
memset(s,0,sizeof(s));
}
void assign_one(void){
clear();
len=s[0]=1;
}
void operator *= (int);
void output(void){
for(int i=len-1;i>=0;i--) printf("%d",s[i]);
printf("\n");
}
};
void HPINT::operator *=(int b){//a*b
int i;
for(i=0;i<len;i++) s[i]*=b;
for(i=0;i<len||s[i];i++) s[i+1]+=s[i]/10,s[i]%=10;
if(i>len) len=i;
while(len>1&&!s[len-1]) len--;
}
vector<int> dc;
void work(void){
int n;
scanf("%d",&n);
HPINT ans;ans.assign_one();
int tot=1,i;
while(true){
if(n>tot){
tot++;
n-=tot;
dc.push_back(tot);
}
else{
for(i=dc.size()-1;i>=0&&n;i--){
dc[i]++;
n--;
}
for(i=dc.size()-1;i>=0&&n;i--){
dc[i]++;
n--;
}
break;
}
}
for(i=0;i<dc.size();i++) ans*=dc[i];
ans.output();
}
int main(){
freopen("best.in","r",stdin);
freopen("best.out","w",stdout);
work();
return 0;
}