2 条题解

  • 1

    I Have A Big Number

    一道普通的模拟,只要从低位四个四个一切,切到第12个时全部压入即可,因为没有要求 之后再分万载,亿载之类。

    参考代码

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    const vector<string> units = {
        "", "wan", "yi", "zhao", "jing", "gai", "zi", "rang", "gou", "jian", "zheng", "zai"
    };
    
    int main() {
        string N;
        cin >> N;
        vector<string> parts;
    
        int position = N.size();
        int count = 0;
    
        while(position > 0)
        {
            int start = max(0, position - 4);  
            int len = position - start;
    
            if(count < 11) {
                parts.push_back(N.substr(start, len));
            } else { 
                parts.push_back(N.substr(0, position));
                break;
            }
    
            position -= 4;   
            count++;
        }
    
        string res;
    
        for (int i = parts.size() - 1; i >= 0; --i) {
            if (parts[i] == "0000") continue;
            size_t j = 0;
            while (j < parts[i].size() - 1 && parts[i][j] == '0') ++j;
            res += parts[i].substr(j) + units[i];
        }
    
        cout << res << endl;
    
        return 0;
    }
    

    信息

    ID
    1101
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    96
    已通过
    11
    上传者