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;
    }
    
    • 0
      @ 2025-10-13 20:12:16

      I Have A Big Number

      把所给数字当字符串处理,根据每种单位所需长度依次匹配,值得注意的是,万之后的余数部分也可以当作一种“没有名字的单位”,在匹配过程中依次输出即可

      参考代码(python)

      from sys import stdin
      
      def p(i:int):
          global l
          if length-l<=a[i][0]:
              return
          x=length-l-a[i][0]
          num=int(''.join(n[l:l+x]))
          l+=x
          if num==0:
              return
          ans=str(num)+a[i][1]
          print(ans,end='')
      
      a=((44,'zai'),(40,'zheng'),(36,'jian'),(32,'gou'),(28,'rang'),(24,'zi'),(20,'gai'),(16,'jing'),(12,'zhao'),(8,'yi'),(4,'wan'),(0,''))
      n=list(stdin.readline().rstrip())
      length=len(n)
      l=0
      for _ in range(len(a)):
          p(_)
      
      
      • 1

      信息

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