代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int n;
struct person{
int a,b;
bool operator<(const person &bb)const{
return (1ll*a*b)<(1ll*bb.a*bb.b);
}
}man[N];
struct bigint{
int a[N],len;
bigint(){
len=1;
memset(a,0,sizeof a);
}
};
bigint s2b(string s) {
bigint ret;
ret.len=s.size();
for(int i=1;i<=ret.len;++i)
ret.a[i]=s[ret.len-i]-'0';
return ret;
}
bigint operator +(bigint a,bigint b) {
bigint ret;
ret.len=max(a.len,b.len);
for(int i=1; i <= ret.len;++i)
ret.a[i] = a.a[i] + b.a[i];
for(int i=1; i <= ret.len;++i)
if(ret.a[i]>=10)
ret.a[i] -= 10, ++ret.a[i + 1];
if(ret.a[ret.len + 1])
++ret.len;
return ret;
}
bigint operator -(bigint a,bigint b) {
bigint ret;
ret.len=a.len;
for(int i = 1; i <=ret.len; ++i)
ret.a[i] = a.a[i] - b.a[i];
for(int i = 1; i <=ret.len; ++i)
if(ret.a[i] < 0)
ret.a[i] += 10, --ret.a[i + 1];
while(ret.len> 1 && !ret.a[ret.len])
--ret.len;
return ret;
}
bigint operator *(bigint a,int b) {
bigint ret;
ret.len=a.len;
for(int i = 1; i <= ret.len; ++i)
ret.a[i] = a.a[i] * b;
for(int i = 1; i < ret.len; ++i)
ret.a[i + 1] += ret.a[i] / 10, ret.a[i] %= 10;
while(ret.a[ret.len] >= 10) {
ret.a[ret.len+ 1] = ret.a[ret.len] / 10;
ret.a[ret.len] %= 10;
++ret.len;
}
return ret;
}
bigint operator /(bigint a,int b) {
// re余数
bigint ret;
ret.len=a.len;
int re = 0;
for(int i = ret.len; i >= 1; --i) {
re = re * 10 + a.a[i];
ret.a[i] = re / b;
re %= b;
}
while(ret.len > 1 && !ret.a[ret.len])
--ret.len;
return ret;
}
bool operator <(bigint a,bigint b) {
if(a.len!=b.len)
return a.len<b.len;
for(int i =a.len; i >= 1; --i)
if(a.a[i] != b.a[i])
return a.a[i] < b.a[i];
return false;
}
bool operator ==(bigint a,bigint b) {
if(a.len!=b.len)
return false;
for(int i =a.len; i >= 1; --i)
if(a.a[i] != b.a[i])
return false;
return true;
}
bool operator <=(bigint a,bigint b) {return a<b||a==b;}
bool operator >=(bigint a,bigint b) {return (a<b)==0;}
bool operator > (bigint a,bigint b) {return (a<=b)==0;}
bigint max(bigint a,bigint b){
return (a<b?b:a);
}
void out(bigint a){
for(int i = a.len; i >= 1; --i)
cout << a.a[i];
cout << endl;
}
int main(){
cin>>n>>man[0].a>>man[0].b;
for(int i=1;i<=n;i++)
cin>>man[i].a>>man[i].b;
sort(man+1,man+n+1);
bigint ans,tmp;
tmp=s2b(to_string(man[0].a));
for(int i=1;i<=n;++i){
ans=ans+tmp/man[i].b;
tmp=tmp*man[i].a;
}
out(ans);
return 0;
}