P1080 [NOIP 2012 提高组] 国王游戏
#include<bits/stdc++.h>
using namespace std;
string a1,b1;
int n;
string sum[1001];
string aa;
vector<unsigned long long>sum1(1005),ans1(1005);
struct node{
int z,y;
}a[1001];
bool cmp(node a,node b){
return a.z<b.z;
}
void cheng(string aa,unsigned long long b){
sum1.clear();
int c[1001]{0};
int n=aa.length();
for(int i=0;i<n;i++) c[i]=aa[n-i-1]-'0';
for(int i=0;i<n;i++){
sum1[i]+=(c[i]*b);
sum1[i+1]+=sum1[i]/10;
sum1[i]%=10;
}
}
void chu(string aaa,unsigned long long bb){
sum1.clear();
unsigned long long x=0;
for(int i=0;i<n;i++){
x=x*10+(aaa[i]-'0');
sum1[i]=x/bb;
x%=bb;
}
}
bool ma(vector<unsigned long long>a,vector<unsigned long long>b){
if(a.size()!=b.size()) return a.size()>b.size();
for(int i=a.size()+1;i>=0;i--) if(a[i]!=b[i]) return a[i]>b[i];
}
int main(){
cin>>n>>a1>>b1;
for(int i=1;i<=n;i++) cin>>a[i].z>>a[i].y;
sort(a+1,a+n+1,cmp);
sum[0]=a1;
for(int i=1;i<=n;i++){
cheng(sum[i-1],a[i].z);
chu(sum[i-1],a[i].y);
if(ma(sum1,ans1)) for(int i=0;i<sum1.size()+2;i++) ans1[i]=sum1[i];
}
for(int i=ans1.size()-1;i>=0;i--) cout<<ans1[i];
}
qwqqwq