比赛 |
2012Day1 |
评测结果 |
AAAAAAAAAA |
题目名称 |
国王游戏 |
最终得分 |
100 |
用户昵称 |
forever |
运行时间 |
0.017 s |
代码语言 |
C++ |
内存使用 |
1.43 MiB |
提交时间 |
2015-10-22 19:31:23 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAXN 10000
struct dd{
int left,right;
}jie[12000];
struct dt{
int a[100002];
}ans,k;
int n;
bool comp(const dd & a,const dd & b){
return a.left*a.right<b.left*b.right;
}
void mul(int h){
ans.a[0]+=2;
for(int i=1;i<=ans.a[0];++i)
ans.a[i]=ans.a[i]*h;
for(int i=1;i<=ans.a[0];++i){
ans.a[i+1]+=ans.a[i]/MAXN;
ans.a[i]%=MAXN;
}
while(ans.a[0]>=1&&ans.a[ans.a[0]]==0) ans.a[0]--;
}
dt muk(dt m,int d){
for(int i=m.a[0];i>=1;--i){
if(i!=1) m.a[i-1]=(m.a[i]%d)*MAXN+m.a[i-1];
m.a[i]/=d;
}
while(m.a[0]>=1&&m.a[m.a[0]]==0) m.a[0]--;
return m;
}
int main(){
freopen("kinggame.in","r",stdin);
freopen("kinggame.out","w",stdout);
scanf("%d",&n);
scanf("%d%d",&jie[0].left,&jie[0].right);
for(int i=1;i<=n;++i) scanf("%d%d",&jie[i].left,&jie[i].right);
sort(jie+1,jie+n+1,comp);
ans.a[0]=1; ans.a[1]=1;
mul(jie[0].left);
for(int i=1;i<=n-1;++i) mul(jie[i].left);
k=muk(ans,jie[n].right);
if(k.a[k.a[0]]==0) puts("1");
else{
cout<<k.a[k.a[0]];
for(int i=k.a[0]-1;i>=1;--i) printf("%04d",k.a[i]);
}
}