c_cpp 将大数字表示为字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将大数字表示为字符串相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

string add (string s, string k) {
    int num, carry = 0;
    string res;

    int i=s.length()-1, j = k.length()-1;
    if (i<j)
        return add(k,s);
    while (i>=0 && j>=0) {
        num= carry + (s[i]-'0')+ (k[j]- '0');
        carry = num/10;
        res.push_back(num%10+ '0');
        if (i==0 && num/10>0)
            res.push_back(num/10+ '0');
        i--;
        j--;
    }
    while (i>=0) {
        num= carry + (s[i]-'0');
        carry = num/10;
        res.push_back(num%10+ '0');
        if (i==0 && num/10>0)
            res.push_back(num/10+ '0');
        i--;
    }
    reverse(res.begin(), res.end());
    return res;

}

string multiply (string s, char k) {
    int num, carry = 0;
    string res;
    for (int i=s.length()-1; i>=0;i--) {
        num = carry + (s[i]-'0')*(k- '0');
        carry = num/10;
        res.push_back(num%10+ '0');
        if (i==0 && num/10>0)
            res.push_back(num/10 + '0');
    }
    reverse(res.begin(), res.end());
    return res;
}

void func (string num1, string num2) {
    int n1 = num1.length()-1, n2 = num2.length()-1;
    string sum= "0";
    for (int i=n2;i>=0;i--) {
        string res = multiply (num1, num2[i]);
        int j=n2-i;
        while (j-->0)
            res+= '0';
        sum = add(sum, res);
    }
    cout<< sum;
    return;
}

int main() {
    string num, div;
    string num1, num2;
    getline(cin, num1);
    getline(cin, num2);
    func(num1, num2);
    return 0;
}

以上是关于c_cpp 将大数字表示为字符串的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 除以表示为字符串的大数字

c_cpp 给定两个表示为字符串的数字,将数字作为字符串返回乘法。注意:数字可以任意大

将大数字(或字符串)压缩为小值

将大查询数据导出到云存储,整数字段更改为字符串格式,但浮点格式保持为数字格式

c_cpp 加一。加一个。给定一个非负数表示为数字数组,加上一个数字。存储数字使得t

c_cpp 将字符串转换为矢量(单个数字)