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

如何输出一个超级大的数

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

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日

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图