pku1220

pku1220

schindlerlee原创,禁止转载和用于商业用途

此题意思很明显
把一个数从进制a转化到进制b
用C/C++写实在是太麻烦了,用java搞了一下,还是不熟啊,写了好久
 1  // java catalan 数
 2  import  java.math. * ;
 3  import  java.util. * ;
 4  import  java.io. * ;
 5 
 6  public   class  Main {
 7 
 8       public   static   void  main(String[] args) {
 9          Scanner cin  =   new  Scanner(
10                   new  BufferedReader(
11                   new  InputStreamReader(System.in)));
12           // That is (in decimal) A = 10, B = 11, , Z = 35, a = 36, b = 37, , z = 61
13           int  c  =  cin.nextInt();
14           while  (c --   >   0 ) {
15               int  a  =  cin.nextInt();
16               int  b  =  cin.nextInt();
17              BigInteger r  =  BigInteger.valueOf( 0 );
18              BigInteger idx  =  BigInteger.valueOf( 1 );
19              String s  =  cin.next();
20              System.out.println(a  +   "   "   +  s);
21               for  ( int  i  =  s.length()  -   1 ; i  >=   0 ; i -- , idx  =  idx.multiply(BigInteger.valueOf(a))) {
22                   char  t  =  s.charAt(i);
23                   // 8 62 2 abcdefghiz  System.out.println("char t = " + t);
24                   int  add;
25                   if  (t  >=   ' 0 '   &&  t  <=   ' 9 ' ) {
26                      add  =  t  -   ' 0 ' ;
27                  }  else   if  (t  >=   ' A '   &&  t  <=   ' Z ' ) {
28                      add  =  t  -   ' A '   +   10 ;
29                  }  else  {
30                      add  =  t  -   ' a '   +   36 ;
31                  }
32                  r  =  r.add(idx.multiply(BigInteger.valueOf(add)));
33              }
34 
35               //   System.out.println(r.toString());
36              String res  =   "" ;
37              idx  =  BigInteger.valueOf(b);
38               if  (s.equals( " 0 " )) {
39                  System.out.println(b  +   "  0 " );
40              }  else  {
41                   while  (r.compareTo(BigInteger.ZERO)  >   0 ) {
42                      BigInteger ad[];
43                      ad  =  r.divideAndRemainder(idx);
44                      r  =  ad[ 0 ];
45                       int  t  =  ad[ 1 ].intValue();
46                       char  ch;
47                       if  (t  >=   0   &&  t  <=   9 ) {
48                          ch  =  ( char ) (t  +   ' 0 ' );
49                      }  else   if  (t  >=   10   &&  t  <=   35 ) {
50                          ch  =  ( char ) (t  -   10   +   ' A ' );
51                      }  else  {
52                          ch  =  ( char ) (t  -   36   +   ' a ' );
53                      }
54                      res  =  ch  +  res;
55                   //      System.out.println("ad[0]= "+ad[0]);
56                   //      System.out.println("ad[1]= "+ad[1]);
57                  }
58                  System.out.println(b  +   "   "   +  res);
59              }
60              System.out.print( ' \n ' );
61           // System.out.println("res = "+res);
62          }
63      }
64  }
65 
66 


你可能感兴趣的:(pku1220)