改了很久一直过不了,求大佬们调下代码。
#include<bits/stdc++.h>
using namespace std;
struct asd{
int a,b;
}a[1009];
inline bool aaa(asd a,asd b)
{
return a.a*a.b<b.a*b.b;
}
inline void szz(int a[],string &b)
{
int s=0;b="";
char c;
for(int i=10000;i>=1;--i)
{
c=a[i]+'0';
if(a[i]!=0)
s=1;
if(s)
b=c+b;
}
return ;
}
inline void zzs(int a[],string b)
{
int l=b.size();
for(int i=0;i<l;++i)
a[l-i]=b[i]-'0';
return ;
}
inline void qqq(int a,string &b)
{
char c;b="";
while(a!=0)
c=a%10+'0',b=c+b,a/=10;
}
inline void cheng(string a,string b,int c[])
{
int x[10009],y[10009],l1=a.size(),l2=b.size();
zzs(x,a),zzs(y,b);
for(int i=1;i<=l1;++i)
for(int j=1;j<=l2;++j)
c[i+j-1]=x[i]*y[j];
for(int i=1;i<=l1+l2+1;++i)
c[i+1]=c[i]/10,c[i]=c[i]%10;
// printf("qq%d %d %d\n",x[1],y[1],c[1]);
return ;
}
void chu(int a[],int b)
{
int s=0,y=0;
for(int i=10000;i>=1;--i)
{
if(a[i]!=0)
s=1;
if(s)
{
a[i]+=y*10;
y=a[i]%b,a[i]/=b;
}
}
return ;
}
int n,s[10009],as;
string x,y;
int main()
{
s[1]=1;
cin>>n;
for(int i=0;i<=n;++i)
cin>>a[i].a>>a[i].b;
sort(a+1,a+1+n,aaa);
for(int i=1;i<=n;++i)
{
szz(s,x),qqq(a[i-1].a,y);
cheng(x,y,s);
// cout<<x<<" "<<y<<" "<<s[1]<<endl;
}
chu(s,a[n].b);
// cout<<s[1]<<" "<<a[n].b<<endl;
for(int i=10000;i>=1;--i)
{
if(s[i]!=0)
as=1;
if(as)
cout<<s[i];
}
return 0;
}