TB椰程 TypeBuddy 打字搭子

2023-09 · 2级 · 数字黑洞

GESP 标程 · 考级真题 · 代码 · cpp · 难度 3/5 · 共 1375 字

CCF 原卷官方标程 · 位运算、组合数学、浮点数 · 本地编译通过

  • 2023-09
  • 位运算

正文

// GESP 2023-09 C++ 2级 编程题 2 · 数字黑洞
// 原题:https://oj.yecheng.tv/p/gs2309l2p2
// 官方原卷:https://gesp.ccf.org.cn/101/attach/1570611195281440.pdf
// 题意:给定一个三位数,要求各位不能相同。
// 知识点:位运算、组合数学、浮点数
// 参考程序:CCF 原卷官方标程,PDF 抽取后已去行号;本地编译核验通过,供打字练习
// 原卷样例验证:样例验证 1/1 通过
//
#include <iostream>
using namespace std;
int main() {
    int n = 0;
    cin >> n;
    for (int t = 0; ; t++) {
        if (n == 495) {
            cout << t << endl;
            break;
        }
        int m0 = n % 10, m1 = n / 10 % 10, m2 = n / 100;
        int tmax = 0, tmin = 0;
        if (m0 >= m1 && m1 >= m2) {
            tmax = m0 * 100 + m1 * 10 + m2;
            tmin = m2 * 100 + m1 * 10 + m0;
        } else if (m0 >= m2 && m2 >= m1) {
            tmax = m0 * 100 + m2 * 10 + m1;
            tmin = m1 * 100 + m2 * 10 + m0;
        } else if (m1 >= m0 && m0 >= m2) {
            tmax = m1 * 100 + m0 * 10 + m2;
            tmin = m2 * 100 + m0 * 10 + m1;
        } else if (m1 >= m2 && m2 >= m0) {
            tmax = m1 * 100 + m2 * 10 + m0;
            tmin = m0 * 100 + m2 * 10 + m1;
        } else if (m2 >= m0 && m0 >= m1) {
            tmax = m2 * 100 + m0 * 10 + m1;
            tmin = m1 * 100 + m0 * 10 + m2;
        } else { // m2 >= m1 && m1 >= m0
            tmax = m2 * 100 + m1 * 10 + m0;
            tmin = m0 * 100 + m1 * 10 + m2;
        }
        n = tmax - tmin;
    }
    return 0;
}

GESP 标程 · 考级真题的其它内容

打字首页 · 英语学习中心 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK