数制转换 1207 1216

题目描述:

求任意两个不同进制非负整数的转换(2 进制 ~ 16 进制),所给整数在 long 所能表达的范围之内。

不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

输入描述:

每组输入占一行,包含用空格分开的三个整数 a, n, b

a 表示其后的 n 是 a 进制整数

b 表示欲将 a 进制整数 n 转换成 b 进制整数。

a, b是十进制整数,2 <= a, b <= 16。

输出描述:

每组输入输出一行,为转换后的 b 进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

样例输入:

8 376 12

15 Aab3 7

样例输出:

192

210306

先转换为10进制,再转换为其他

 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     int a,b;
 5     string n;
 6     while(cin>>a>>n>>b){
 7         int len,i,m;
 8         len=n.length();
 9         int nn[len];
10         int s=0,c=1,k=0;
11         char ns[50];
12         for(i=len-1;i>=0;i--){
13             if(n[i]>='0'&&n[i]<='9'){
14                 nn[i]=n[i]-'0';
15             }
16             else if(n[i]>='a'&&n[i]<='z'){
17                 nn[i]=n[i]-'a'+10;
18             }
19             else if(n[i]>='A'&&n[i]<='Z'){
20                 nn[i]=n[i]-'A'+10;
21             }
22             s=s+nn[i]*c;
23             c=c*a;
24             //cout<<nn[i]<<endl;
25         }
26         //cout<<s<<endl;
27         do{
28             m=s%b;
29             if(m<10){
30                 m=m+'0';
31             }
32             else{
33                 m=m-10+'A';
34             }
35             ns[k++]=m;
36             s=s/b;
37         }while(s!=0);
38         for(i=k-1;i>=0;i--){
39             cout<<ns[i];
40         }
41         cout<<endl;
42     }
43     return 0;
44 } 
zq

题目描述:

输入一个数 n(n < 10),接下来有 n 行,每行给出一个十进制数 m,将 m 由十进制转换成 17 进制(超过 9 的数分别用大写字母 A - G 表示)并输出。数据范围:m < 30000。

输入描述:

第一行为一个数 n,接下来为 n 行,每行一个十进制数。

输出描述:

输出 n 行,每行一个 17 进制数。

样例输入:

2

16

17

样例输出:

G

10

 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     int n,i,s,k,j;
 5     char p;
 6     cin>>n;
 7     int m[n];
 8     char c[50];
 9     for(i=0;i<n;i++){
10         cin>>m[i];
11     }
12     for(i=0;i<n;i++){
13         k=0;
14         do{
15             s=m[i]%17;
16             if(s<10){
17                 //cout<<s;
18                 s=s+'0';
19                 c[k++]=s;
20             }
21             else{
22                 p=s-10+'A';
23                 //cout<<p;
24                 c[k++]=p;
25             }
26             m[i]=m[i]/17;
27         }while(m[i]!=0); 
28         for(j=k-1;j>=0;j--){
29             cout<<c[j];
30         }
31         cout<<endl;
32     }
33     return 0;
34 } 
例子