zoukankan      html  css  js  c++  java
  • vijosP1779国王游戏

    题目:https://vijos.org/p/1779

    题解:忽然想起来我好像还没写过高精度除以单精度,于是拿这题练练手。。。没想到1A了。。。

    代码:

      1 #include<cstdio>
      2 #include<cstdlib>
      3 #include<cmath>
      4 #include<cstring>
      5 #include<algorithm>
      6 #include<iostream>
      7 #include<string>
      8 #include<set>
      9 #include<map>
     10 #include<vector>
     11 #include<queue>
     12 #define maxn (5000+10)
     13 #define for0(i,n) for(int i=0;i<=n;i++)
     14 #define for1(i,n) for(int i=1;i<=n;i++)
     15 #define for2(i,s,t) for(int i=s;i<=t;i++)
     16 #define for3(i,t,s) for(int i=t;i>=s;i--)
     17 #define ll long long
     18 #define mod 10000
     19 using namespace std;
     20 inline int read()
     21 {
     22   int x=0,f=1;char ch=getchar();
     23   while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
     24   while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
     25   return x*f;
     26 }
     27 class bigg
     28 {
     29     public:
     30         int c[maxn],l;
     31         bigg(){memset(c,0,sizeof(c));l=0;}
     32         bigg operator = (int b)
     33         {
     34             memset(c,0,sizeof(c));l=0;
     35             while(b)c[++l]=b%mod,b/=mod;
     36             return(*this);
     37         }
     38         bigg operator =(const bigg &b)
     39         {
     40             l=b.l;
     41             for1(i,l)c[i]=b.c[i];
     42             return(*this);
     43         }
     44         bigg operator +(const bigg &b)
     45         {
     46             bigg a;
     47             a.l=max(l,b.l);
     48             for1(i,l)
     49              {
     50               a.c[i]+=a.l+b.l;
     51               a.c[i+1]=a.c[i]/mod;
     52               a.c[i]%=mod;
     53              }
     54             if(c[a.l+1])a.l++; 
     55             return  a;
     56         }
     57         bigg operator *(int b)
     58         {
     59             bigg a;a.l=l;
     60             int x=0;
     61             for1(i,l)
     62             {
     63                 x+=b*c[i];
     64                 a.c[i]=x%mod;
     65                 x/=mod;
     66             }
     67             while(x)a.c[++a.l]=x%mod,x/=mod;
     68             return a;
     69         }
     70         bigg operator /(int b)
     71         {
     72             bigg a;
     73             int x=0;
     74             for3(i,l,1)
     75             {
     76                 x=x*mod+c[i];
     77                 a.c[i]=x/b;
     78                 x%=b;
     79             }
     80             a.l=l;
     81             while(!a.c[a.l])a.l--;
     82             return a;
     83         }
     84         void print()
     85         {
     86             printf("%d",c[l]);
     87             for3(i,l-1,1)printf("%04d",c[i]);printf("
    ");
     88         }
     89 };
     90 int n,a[maxn],b[maxn],c[maxn];
     91 inline bool cmp(int x,int y){return a[x]*b[x]<a[y]*b[y];}
     92 int main()
     93 {
     94     freopen("input.txt","r",stdin);
     95     freopen("output.txt","w",stdout);
     96     n=read()+1;
     97     for1(i,n)a[i]=read(),b[i]=read(),c[i]=i;
     98     sort(c+1,c+n+1,cmp);
     99     bigg ans;ans=1;
    100     for1(i,n-1)ans=ans*a[c[i]];
    101     ans=ans/b[c[n]];
    102     ans.print();
    103     return 0;
    104 }
    View Code
  • 相关阅读:
    fianl关键字和static关键字
    jdk的安装
    this关键字和super关键字
    Java 数组
    网络通信知识复习
    Linux 下执行本目录的可执行文件(命令)为什么需要在文件名前加“./”
    CentOS 7 下安装 teamviewer 13
    我的 Putty 配色方案
    在 Mac OS X 下,如何向 sudoers 文件添加新用户
    Windows 7 下使用 pandoc 转换文档格式
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/4076160.html
Copyright © 2011-2022 走看看