ZOJ 1334 - Basically Speaking

 1  /*  Accepted 1334 C++ 00:00.00 840K  */
 2  #include  < iostream >
 3 
 4  using   namespace  std;
 5 
 6  char  c[]  =   " 0123456789ABCDEF " ;
 7 
 8  void  convert( string   &  num,  int  s,  int  t)
 9  {
10       if (s  ==  t)
11      {
12          printf( " %7s\n " , num.c_str());
13           return ;
14      }
15      
16       int  n  =   0 ;
17       for ( int  i  =   0 ; i  <  num.size(); i ++ )
18      {
19           int  m  =   1 ;
20           for ( int  k  =   1 ; k  <  num.size()  -  i; k ++ )
21              m  *=  s;
22           if (num[i]  >=   ' A '   &&  num[i]  <=   ' F ' )
23              n  +=  (num[i]  -   ' A '   +   10 *  m;
24           else
25              n  +=  (num[i]  -   ' 0 ' *  m;
26      }
27      
28       string  str;
29       while (n)
30      {
31          str  +=  c[n  %  t];
32          n  /=  t;
33      }
34      
35       if (str.size()  >   7 )
36          printf( " %7s\n " " ERROR " );
37       else
38      {
39           for ( int  i  =   0 ; i  <  str.size()  /   2 ; i ++ )
40              swap(str[i], str[str.size()  -  i  -   1 ]);
41          printf( " %7s\n " , str.c_str());
42      }
43       return ;
44      
45      cout  <<  endl;
46  }
47 
48  int  main()
49  {
50       string  num;
51       int  s, t;
52      
53       while (cin  >>  num  >>  s  >>  t)
54          convert(num, s, t);
55      
56       return   0 ;
57  }
58 

你可能感兴趣的:(ZOJ 1334 - Basically Speaking)