zoukankan      html  css  js  c++  java
  • 数制转换 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 } 
    例子
    转载请标明出处
  • 相关阅读:
    在SQLite中使用索引优化查询速度
    SQLite支持的SQL数据操作
    left (outer) join , right (outer) join, full (outer) join, (inner) join, cross join 区别
    深入理解Android内存管理原理(六)
    Merge Sorted Array
    Sort Colors
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Tree Postorder Traversal
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/zq-dmhy/p/11099479.html
Copyright © 2011-2022 走看看