zoukankan      html  css  js  c++  java
  • 大整数运算

    2018-09-27 22:42:13

    一、大整数加法

    问题描述:

    问题求解:

        public String addStrings2(String num1, String num2) {
            if (num1.length() < num2.length()) return addStrings(num2, num1);
            char[] n1 = num1.toCharArray(), n2 = num2.toCharArray();
            int m = n1.length, n = n2.length;
            int carry = 0, i = 1, sum = 0;
            while (i <= n) {
                sum = n1[m - i] + n2[n - i] - '0' * 2 + carry;
                carry = sum / 10;
                n1[m - i] = (char) (sum % 10 + '0');
                i++;
            }
            while (carry > 0 && i <= m) {
                sum = n1[m - i] + carry - '0';
                carry = sum / 10;
                n1[m - i] = (char) (sum % 10 + '0');
                i++;
            }
            return carry == 0 ? new String(n1) : "1" + new String(n1);
        }
    

    二、大整数乘法

    问题描述:

    问题求解:

    `num1[i] * num2[j]` will be placed at indices `[i + j`, `i + j + 1]` 

        public String multiply(String num1, String num2) {
            int len1 = num1.length();
            int len2 = num2.length();
            int[] res = new int[len1 + len2];
            for (int i = len1 - 1; i >= 0; i--) {
                for (int j = len2 - 1; j >= 0; j--) {
                    int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
                    int p1 = i + j;
                    int p2 = i + j + 1;
                    int sum = mul + res[p2];
                    res[p1] += sum / 10;
                    res[p2] = sum % 10;
                }
            }
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < res.length; i++) if (!(sb.length() == 0 && res[i] == 0)) sb.append(res[i]);
            return sb.length() == 0 ? "0" : sb.toString();
        }
    
  • 相关阅读:
    ural 1146. Maximum Sum(动态规划)
    ural 1119. Metro(动态规划)
    ural 1013. K-based Numbers. Version 3(动态规划)
    Floyd算法
    杭电21题 Palindrome
    杭电20题 Human Gene Functions
    杭电15题 The Cow Lexicon
    杭电三部曲一、基本算法;19题 Cow Bowling
    杭电1002 Etaoin Shrdlu
    Qt 学习之路 2(37):文本文件读写
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/9716169.html
Copyright © 2011-2022 走看看