文章

10

粉丝

578

获赞

16

访问

110.0k

头像
大数乘法两种解法,优化竖式法,先乘后进位法
P1475
发布于2020年2月18日 20:13
阅读数 21.6k

共两种,第二种好理解

 

第一种1.借鉴      https://leetcode.com/problems/multiply-strings/discuss/17605/Easiest-JAVA-Solution-with-Graph-Explanation

#include
using namespace std;

int main() {
    int n;
    string num1, num2;
    while(cin >> n >> num1 >> num2) {
        int len = n * 2;

        //存放计算数据
        int ans[len] = {0};
        for(int i = n - 1; i >= 0; i--) {
            int n1 = num1[i] - '0';
            for(int j = n - 1; j >= 0; j--) {
                int n2 = num2[j] - '0';
                int t = (n2 * n1) + ans[i + j + 1];
                ans[i + j + 1] = t % 10;
                ans[i + j] += (t / 10);
            }
        }

        //判断是否最高位,如值0123,则0需要去除,变为123
        //输出
        int i = (ans[0] == 0 ? 1 : 0);
        for(; i < len - 1; i++)
            printf("%d", ans[i]);
        printf("%d\n", ans[len - 1]);
    }
}

两数相乘计算规律如下(编号统一从左至右0,1,2,3····)

乘数...

登录查看完整内容


登录后发布评论

1 条评论
admin SVIP
2020年2月18日 21:02

不错哟,点个赞yes

赞(0)