(HDU)1335 -- Basically Speaking(基础和交流)

题目链接:http://vjudge.net/problem/HDU-1335

思路:把A进制的数字符串处理编程十进制形式,再转换成B进制。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <iostream>
 5 #include <algorithm>
 6 #include <string>
 7 #include <cstdlib>
 8 
 9 using namespace std;
10 
11 int main()  
12 {  
13     char s[100];  
14     int num[100],a,b;  
15     while(~scanf("%s%d%d",s,&a,&b))  
16     {  
17         int len = strlen(s);  
18         memset(num,0,sizeof(num));  
19         for(int i = 0; i < len; i++)  
20         {  
21             if(s[i]>='0' && s[i] <= '9')  
22                 num[i] = s[i] - '0';  
23             else  
24                 num[i] = s[i] - 'A' + 10;  
25         }  
26         int A,NumA;  
27         NumA = 0,A = 1;  
28         for(int i = len-1; i >= 0; i--)  
29         {  
30             NumA += (num[i]*A);  
31             A *= a;  
32         }  
33         char ans[100];  
34         int k = 0;  
35         memset(ans,0,sizeof(ans));  
36         while(NumA)  
37         {  
38             char temp = NumA % b + '0';  
39             if(temp >='0' && temp<='9')  
40                 ans[k++] = temp;  
41             else  
42                 ans[k++] = NumA%b+'A'-10;  
43             NumA /= b;  
44         }  
45         ans[k] = '\0';  
46         if(k > 7)  
47             printf("  ERROR\n");  
48         else  
49         {  
50             for(int i = 0;i < 7-k;i++)  
51                 printf(" ");  
52             for(int i = k-1; i >= 0; i--)  
53                 printf("%c",ans[i]);  
54             printf("\n");  
55         }  
56     }  
57   
58     return 0;  
59 }  

 

posted @ 2016-12-06 15:02  ACDoge  阅读(204)  评论(0编辑  收藏  举报