很强的高精 唐神的板子好用又好看 %Candy?

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 6 using namespace std; 7 8 const int B = 10000; 9 10 struct Big{ 11 int n,a[1010]; 12 int& operator [](int x){return a[x];} 13 Big():n(1){memset(a,0,sizeof(a));} 14 void ini(int x){a[1] = x;n = 1;} 15 }; 16 17 Big operator *(Big a,int b){ 18 int g = 0; 19 for(int i = 1;i <= a.n;i++) 20 g += a[i]*b,a[i] = g%B,g /= B; 21 while(g)a[++a.n] = g%B,g /= B; 22 return a; 23 } 24 25 Big operator *(Big a,Big b){ 26 Big c; 27 for(int i = 1;i <= a.n;i++){ 28 int g = 0; 29 for(int j = 1;j <= b.n;j++) 30 g += c[i+j-1]+a[i]*b[j],c[i+j-1] = g%B,g /= B; 31 c[i+b.n] = g; 32 } 33 c.n = a.n+b.n; 34 while(c.n > 1&&c[c.n] == 0)c.n--; 35 return c; 36 } 37 38 Big operator +(Big a,Big b){ 39 int g = 0,n = max(a.n,b.n); 40 for(int i = 1;i <= n;i++){ 41 g += i<=a.n? a[i]:0; 42 g += i<=b.n? b[i]:0; 43 a[i] = g%B,g /= B; 44 } 45 a.n = n; 46 if(g)a[++a.n] = g; 47 return a; 48 } 49 50 Big operator -(Big a,Big b){ 51 for(int i = 1;i <= b.n;i--){ 52 if(a[i] < b[i])a[i+1]--,a[i] += B; 53 a[i] -= b[i]; 54 } 55 int p = b.n+1; 56 while(a[p] < 0)a[p] += B,a[++p]--; 57 while(a.n > 1&&a[a.n] == 0)a.n--; 58 return a; 59 } 60 61 void print(Big a){ 62 printf("%d",a[a.n]); 63 for(int i = a.n-1;i >= 1;i--)printf("%04d",a[i]); 64 } 65 66 bool operator <(Big a,Big b){ 67 if(a.n^b.n)return a.n < b.n; 68 for(int i = a.n;i >= 1;i--)if(a[i]^b[i])return a[i] < b[i]; 69 return false; 70 } 71 72 Big operator /(Big a,int b){ 73 Big c; int r = 0; 74 for(int i = a.n;i > 0;i--) 75 a[i] += r*B,r = a[i]%b,a[i] /= b; 76 while(a[a.n] == 0&&a.n > 1)a.n--; 77 return a; 78 } 79 80 struct node{ 81 int l,r; 82 bool operator <(const node& x)const{ 83 return l*r < x.l*x.r; 84 } 85 }prs[10010]; 86 87 Big sum,ans,cur; 88 int n,m; 89 90 int main(){ 91 cin >> n; 92 for(int i = 0;i <= n;i++)cin >> prs[i].l >> prs[i].r; 93 sort(prs+1,prs+n+1); 94 sum.ini(prs[0].l); 95 for(int i = 1;i <= n;i++){ 96 ans = max(ans,sum/prs[i].r); 97 sum = sum*prs[i].l; 98 } 99 print(ans); 100 return 0; 101 }