top1编程
← 返回题目
题解

存储两个大整数

1 条题解

  • 0
    @ 2026-8-3 18:39:20

    解题思路

    题目要求把大整数转成整数数组存起来再输出。因为大整数位数很多,直接用 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