2 条题解

  • 1
    @ 2025-4-13 19:13:14
    #include <iostream>
    using namespace std;
    
    long long n;
    int a[15];
    
    int main() {
    //将n按7位来分离,之后以10进制数字来保存
    //同时来记录分离的个数
        cin>>n;
        if(n == 0){
            cout<<"00"<<endl;
            return 0;
        }
        int l = 0;
        while(n > 0)
        {   //0111 1111 7f
            l++;
            a[l] = n & 0x7f;
            n = n >>7;
            
        }
    //将低位的每组都 最高位变为1 最后一组填0意味着不变
        for(int i =1; i < l;i++)
        {
            a[i] = a[i] | 0x80;
            
        }
        //将每个a[i]转化位十六进制来输出 分为高4位和第四位
        for(int i =1; i <= l;i++)
        {
            //cout<<a[i]<<endl;
            //将高四位与低四位分开
            //高四位 >> 4
            //低四位 & 0f
            int g4 = a[i] >>4;
            int d4 = a[i] & 0x0f;
            printf("%X",g4);
            printf("%X ",d4);       
        }
        return 0;
    }
    
    • 0
      @ 2025-4-13 17:41:46
      #include <iostream>
      using namespace std;
      void output_digit(int d) {
       if (d >= 10)
       cout << (char)('A' + d - 10);
       else
       cout << (char)('0' + d);
      }
      void output_code(int s) {
       output_digit(s >> 4);
       output_digit(s & 0x0f);
      }
      int main() {
       long long n = 0;
       cin >> n;
       int split[10];
       int l = 0;
       while (n > 0) {
       split[l] = (int)(n & 0x7f);
       n >>= 7;
       l++;
       }
       for (int i = 0; i < l - 1; i++)
       split[i] |= 0x80;
       output_code(split[0]);
       for (int i = 1; i < l; i++) {
       cout << " ";
       output_code(split[i]);
       }
       cout << endl;
      return 0;
      }
      
      • 1

      信息

      ID
      4886
      时间
      1000ms
      内存
      128MiB
      难度
      2
      标签
      递交数
      18
      已通过
      6
      上传者