• 多项式 Wannafly挑战赛22


    后缀表达式 大整数(加法、乘法、gcd java)

      1 import java.math.BigInteger;
      2 import java.util.Scanner;
      3  
      4 class Work {
      5     String str;
      6     int _num,_sym;
      7     int []sym=new int[1000];
      8     BigInteger []num=new BigInteger[1000];
      9     int []w=new int[1000];
     10      
     11     Work() {
     12         BigInteger x,y;
     13         int wx,wy;
     14         Scanner in=new Scanner(System.in);
     15         str=in.nextLine();
     16         work();
     17         x=num[1];
     18         wx=w[1];
     19         str=in.nextLine();
     20         work();
     21         y=num[1];
     22         wy=w[1];
     23          
     24         if (wx>wy)
     25             System.out.println("1/0");
     26         else if (wx<wy)
     27             System.out.println("0/1");
     28         else
     29         {
     30             BigInteger z;
     31             z=x.gcd(y);
     32             x=x.divide(z);
     33             y=y.divide(z);
     34             System.out.print(x+"/"+y);
     35         }
     36         in.close();
     37     }
     38      
     39     void cal()
     40     {
     41         if (sym[_sym]==2)
     42         {
     43             if (w[_num-1]<w[_num])
     44             {
     45                 w[_num-1]=w[_num];
     46                 num[_num-1]=num[_num];
     47             }
     48             else if (w[_num-1]==w[_num])
     49                 num[_num-1]=num[_num-1].add(num[_num]);
     50         }
     51         else if (sym[_sym]==3)
     52         {
     53             w[_num-1]+=w[_num];
     54             num[_num-1]=num[_num-1].multiply(num[_num]);
     55         }
     56         _sym--;
     57         _num--;
     58     }
     59      
     60     void work()
     61     {
     62         int len,i;
     63         BigInteger z;
     64         len=str.length();
     65         z=BigInteger.valueOf(1);
     66         _num=0;
     67         _sym=0;
     68         sym[0]=0;
     69       
     70         for (i=0;i<len;i++)
     71         {
     72             if (str.charAt(i)=='x')
     73             {
     74                 num[++_num]=z;
     75                 w[_num]=1;
     76             }
     77             else
     78             {
     79                 switch(str.charAt(i))
     80                 {
     81                     case '+':
     82                         while (sym[_sym]>=2)
     83                             cal();
     84                         sym[++_sym]=2;
     85                         break;
     86                     case '*':
     87                         while (sym[_sym]>=3)
     88                             cal();
     89                         sym[++_sym]=3;
     90                         break;
     91                     case '(':
     92                         sym[++_sym]=1;
     93                         break;
     94                     case ')':
     95                         while (sym[_sym]!=1)
     96                             cal();
     97                         _sym--;
     98                         break;
     99                 }
    100             }
    101         }
    102         while (_sym>0)
    103             cal();
    104     }
    105 }
    106  
    107 public class Main {
    108     public static void main(String[] args) {
    109         Work work=new Work();
    110     }
    111 }
  • 相关阅读:
    Redis 常用配制参数
    CentOS 7 环境下配制 Redis 服务
    Mysql ERROR 1032 (HY000): Can't find record in TABLE
    Linux下利用Shell使PHP并发采集淘宝产品
    Linux C连接Mysql
    PHP采集淘宝商品
    关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
    mac下svn无法上传.a文件的问题
    armv6, armv7, armv7s的区别
    【转】图片处理:颜色矩阵和坐标变换矩阵
  • 原文地址:https://www.cnblogs.com/cmyg/p/9528479.html
Copyright © 2020-2023  润新知