[Life]学霸,正是老师喜欢的

最近几天放学后,教室里总是闹闹腾腾的一片,学霸们扎在一堆讨论,学弱们围在一起聊天。突然,老师来了。“你们要在5分钟内离开教室!”慢慢的,同学们都走了。

第二天回到家,发现家长手机上有一条很久以前的短信,“天哪!”我惊讶地喊,“老师居然给我们‘点赞’了”。

短信是这样的:

 

image

第三天,老师在下课的时候专门表扬了“我们”,(面带微笑)说:“放学后,有的同学闹闹腾腾,学霸们却在一起讨论数学题目,那些闹腾腾的同学也该学习学习。”(其实偶尔也闲聊一小会啦——作者注)。

终于,我发现,原来“赶人”的话是给“学弱”们说的……

好吧,果然,老师对要好的学霸和不要好的学弱的态度还是不同的,哈哈。

[Solution]《进制转换》解题报告

题目很简单:把一个十进制数转换成十六进制。

亮点:使用常量字符数组来存储0 – 15的对应值0 – F

不多说,直接上代码。


#include <iostream>
#include <string>
using namespace std;

// 定义进制数
const int radix = 16;

// 定义 0-F 对应 0 - 15
const char digit[radix] = "0123456789ABCDEF";

// 定义无符号64位长整型变量 n
unsigned long long n;

// 定义字符串变量 ans,用于存储结果
string ans;

// 主过程
void f(unsigned long long x){
    
    // 将字符串 ans 后连接 x mod radix 的对应 0-F 字符
    ans += digit[x % radix];
    
    // 将 x 赋值为 x / radix (进制数(16))
    x /= radix;
    
    // 如果 x 已被除尽,则退出过程
    if (x == 0) 
        return;
    else
        // 递归调用本过程
        f(x);
}


int main(){
    // 读入n
    cin >> n;
    
    // 执行过程
    f(n);
    
    // 倒序输出字符串
    for (int i = ans.length() - 1; i >= 0; i-- )
        cout << ans[i];
    
    return 0;
}