题解
存储两个大整数
1 条题解
-
0
解题思路
题目要求把大整数转成整数数组存起来再输出。因为大整数位数很多,直接用
int变量会溢出,所以先按字符串读入,再把每一位字符转成数字存进数组,最后按顺序把数组内容输出,结果就和原来一样。这一步是学习高精度前"把大数放进数组"的基础操作,之后所有高精度题都从这里开始。
参考代码
#include <iostream> using namespace std; char sa[2005], sb[2005]; // 两个大整数(字符串) int a[2005], b[2005]; // 转换成数字后存入的数组 int main() { cin >> sa >> sb; // 求两个数的位数 int la = 0, lb = 0; while (sa[la]) la++; while (sb[lb]) lb++; // 把每一位字符转成数字,按顺序存进数组 for (int i = 0; i < la; i++) a[i] = sa[i] - '0'; for (int i = 0; i < lb; i++) b[i] = sb[i] - '0'; // 按数组顺序输出 for (int i = 0; i < la; i++) cout << a[i]; cout << endl; for (int i = 0; i < lb; i++) cout << b[i]; cout << endl; return 0; }复杂度分析
把每位字符转数字存数组要扫一遍,时间复杂度 O(len);额外空间复杂度 O(len)。
- 1