殿下p 2022-11-23 19:09 采纳率: 60%
浏览 18
已结题

如何输出一个超级大的数

请问输出这个超级大的数要怎么输出啊?题目如下,一个汉诺塔问题,汉诺塔我会写,但是输出就不会了。

img

  • 写回答

7条回答 默认 最新

  • 最佳损友1020 2022-11-24 11:49
    关注

    代码如下

    #include <bits/stdc++.h>
    using namespace std;
    const int kMaxDataLen = 10000;  // 最大数据位数
    class BigInt {
     public:
      BigInt() {                        // 初始时赋值为1(f(1)=1)
        memset(data, 0, sizeof(data));  // 数组清零
        data[0] = 1;
        len = 1;
      }
      void Compute() {  // 计算f(n) = 2 * f(n-1) + 1
        int carry = 1;  // 表达式中的加一,同时表示进位
        int sum = 0;
        for (int i = 0; i <= len; i++) {
          sum = data[i] * 2 + carry;
          data[i] = sum % 10;
          carry = sum / 10;
        }
        if (data[len] != 0) {  // 更新数据长度
          len++;
        }
      }
      void Print() {
        for (int i = len - 1; i >= 0; i--) {
          printf("%d", data[i]);
        }
      }
    
     private:
      uint8_t data[kMaxDataLen];  // 用数组每一位表示大整数的一位
      int len;                    //数据长度
    };
    
    int main() {
      BigInt big_number;
      int N;
      cin >> N;
      for (int i = 2; i <= N; i++) {
        big_number.Compute();
      }
      big_number.Print();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月28日
  • 已采纳回答 11月25日
  • 创建了问题 11月23日