zoukankan      html  css  js  c++  java
  • 1027 Colors in Mars (20 分)(进制转换)

    People in Mars represent the colors in their computers in a similar way as the Earth people. That is, a color is represented by a 6-digit number, where the first 2 digits are for Red, the middle 2 digits for Green, and the last 2 digits for Blue. The only difference is that they use radix 13 (0-9 and A-C) instead of 16. Now given a color in three decimal numbers (each between 0 and 168), you are supposed to output their Mars RGB values.

    Input

    Each input file contains one test case which occupies a line containing the three decimal color values.

    Output

    For each test case you should output the Mars RGB value in the following format: first output “#, then followed by a 6-digit number where all the English characters must be upper-cased. If a single color is only 1-digit long, you must print a “0” to the left.

    Sample Input

    15 43 71

    Sample Output

    #123456

    题目大意:

    给三个十进制的数,把它们转换为十三进制的数输出。要求在前面加上一个"#"号

    分析:

    因为0~168的十进制转换为13进制不会超过两位数,所以这个两位数为(num / 13)(num % 13)构成的数字

    原文链接:https://blog.csdn.net/liuchuo/article/details/52120889

    题解

    1. 注意十进制数可能为0;
    2. 注意十进制数转换为十三进制数可能只有1位,需要左边添0。
    #include <bits/stdc++.h>
    
    using namespace std;
    string exchange(int a)
    {
        string s;
        if(a==0) s="00";
        while(a){
            if(a%13==10) s+="A";
            else if(a%13==11) s+="B";
            else if(a%13==12) s+="C";
            else s+=a%13+'0';
            a/=13;
        }
        reverse(s.begin(),s.end());
        if(s.size()==1) s="0"+s;
        return s;
    }
    int main()
    {
    #ifdef ONLINE_JUDGE
    #else
        freopen("1.txt", "r", stdin);
    #endif
        int a,b,c;
        cin>>a>>b>>c;
        cout<<"#"+exchange(a)+exchange(b)+exchange(c);
        return 0;
    }
    

    本来觉得自己写的挺简洁的,直到看到柳神的代码Orz简洁之神!

    #include <cstdio>
    using namespace std;
    int main() {
        char c[14] = {"0123456789ABC"};
        printf("#");
        for(int i = 0; i < 3; i++) {
            int num;
            scanf("%d", &num);
            printf("%c%c", c[num/13], c[num%13]);
        }
        return 0;
    }
    

    本文来自博客园,作者:勇往直前的力量,转载请注明原文链接:https://www.cnblogs.com/moonlight1999/p/15530847.html

  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/moonlight1999/p/15530847.html
Copyright © 2011-2022 走看看