请问输出这个超级大的数要怎么输出啊?题目如下,一个汉诺塔问题,汉诺塔我会写,但是输出就不会了。
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(); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用