美文网首页
大数运算操作

大数运算操作

作者: tingjieee_19e5 | 来源:发表于2018-09-18 11:04 被阅读0次
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

void mulpl(string ch1, string ch2) {
    int len1 = ch1.size();
    int len2 = ch2.size();
    char ch3[1000009];
    for (int i = 0; i < 1000009; ++i)
        ch3[i] = '\0';
    for (int i = 0; i < len1; ++i) {
        for (int j = 0; j < len2; ++j) {
            ch3[i+j] += (ch1[i] - '0') * (ch2[j]-'0');// 直接实现了移位相加
            if (ch3[i + j] > 9 && (i + j) > 0) {
                ch3[i + j - 1] += ch3[i + j] / 10;
                ch3[i + j] %= 10;
            }
        }
    }
    for (int i = len1 + len2 - 1; i > 0; --i) {
        if (ch3[i] > 9) {
            ch3[i - 1] += ch3[i] / 10;
            ch3[i] %= 10;
        }
    }
    if (ch3[0] > 9) {
        cout << ch3[0] / 10;
        ch3[0] %= 10;
    }
    for (int i = 0; i < len1 + len2 - 1; ++i)
        cout << char(ch3[i] + '0');
    cout << endl;
}

void add(string ch1, string ch2) {
    int len1 = ch1.size();
    int len2 = ch2.size();
    char ch3[1000009];
    for (int i = 0; i < 1000009; ++i)
        ch3[i] = '\0';
    int lenmax = max(len1,len2);
    for (int i = 0; i < lenmax; ++i) {
        char c1, c2;
        c1 = i > len1 ? '0' : ch1[i];
        c2 = i > len2 ? '0' : ch2[i];
        ch3[i] = c1-'0' + c2-'0';
    }
    for (int i = lenmax; i > 0; --i) {
        if (ch3[i] > 9) {
            ch3[i - 1] += ch3[i] / 10;
            ch3[i] %= 10;
        }
    }
    if (ch3[0] > 9) {
        cout << ch3[0] / 10;
        ch3[0] %= 10;
    }
    for (int i = 0; i < lenmax; ++i)
        cout << char(ch3[i] + '0');
    cout << endl;
}
int main()
{
    string s1, s2;
    cin >> s1 >> s2;
    mulpl(s1,s2);
    add(s1,s2);


    return 0;
}

相关文章

  • 大数运算操作

  • 初识Java(Java数字处理类-大数字运算)

    一、大数字运算 在 Java 中提供了大数字的操作类,即 java.math.BigInteger 类与 jav...

  • 有符号大数+、-运算

    题目描述: 应用中需要解决大数运算问题。请设计有符号大数类,能支持大数+、-运算和输出。假定本题大数在200位以内...

  • 无符号大数+-*运算

    题目描述: 应用中需要解决大数运算问题。请设计无符号大数类,能支持大数+,-,*,比较运算和输出。假定本题大数在2...

  • [Java教程 10] 运算符之算术运算符

    运算符 运算 对常量和变量进行操作的过程称为运算。 运算符 对常量和变量进行操作的符号称为运算符 操作数 参与运算...

  • 数字处理类

    数字格式化数字运算随机数大数字运算

  • RSA 大数的处理

    1.大数储存 RSA 依赖大数运算,目前主流RSA 算法都建立在512 到1024位的大数运算之上。而大多数的编译...

  • swift第一篇--基本运算

    基本运算 术语 运算操作 术语 一元操作符(前置操作符) 二元操作符 三木操作符 赋值操作 运算操作 加减乘除 ...

  • Swift3.1_运算符

    基本运算符 术语 一元运算符对单一操作对象操作(-a)。一元运算符分前置运算符和后置运算符,前置运算符需紧跟在操作...

  • 运算符及js操作属性

    关系运算符 相等运算符 条件运算符 运算符的优先级 代码块 js操作属性 js操作style属性 js操作clas...

网友评论

      本文标题:大数运算操作

      本文链接:https://www.haomeiwen.com/subject/mjlynftx.html