This is the 17th day of my participation in Gwen Challenge

1027 Colors in Mars (20 points)

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 Specification:

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

Output Specification:

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 its left.

Sample Input:

15 and 71

Sample Output:

# 123456

#include<iostream>
using namespace std;
char radix[13] = {
    '0'.'1'.'2'.'3'.'4'.'5'.'6'.'7'.'8'.'9'.'A'.'B'.'C'
};
int main(a){
    int r,g,b;
    cin>>r>>g>>b;
    cout<<("#");
    cout<<radix[r/13]<<radix[r%13];
    cout<<radix[g/13]<<radix[g%13];
    cout<<radix[b/13]<<radix[b%13];
    return 0;
}
Copy the code

Algorithm notes: citation

Although aliases by definition do not take up memory, they are difficult to implement in practice. Therefore, most compilers still translate references to const Pointers, which hold the original variable. Of course, if the compiler continues to optimize, this can happen a lot

Pointer variables are actually integers of type unsigned int.

so

void swap(int* &p1, int* &p2)
Copy the code

P1 and p2 are aliases for two variables, and operate directly on the variable storing the source address.

void swap(int* p1, int* p2)
Copy the code

If you pass in two unsigned ints, the operation on the original variable is to find the location in the corresponding memory by connecting the integers, and then operate on the memory.

Also, there are actually no Pointers or references to a computer, you can think of them as a wrapper around an address, with some extra information added.