zoukankan      html  css  js  c++  java
  • 高精度乘法,string中的坑

    #include "bits/stdc++.h"
    using namespace std;
    char a[1000];
    char b[1000];
    
    int main()
    {
        while(cin >> a >> b)
        {
            int lena = strlen(a);
            int lenb = strlen(b);
    
            for(int i=0;i < 1000;i++)
                a[i] = a[i] - '0';
            for(int i=0;i < 1000;i++)
                b[i] = b[i] - '0';
    
            int s[1001] = {0};
            int ans;
            for(int i = lenb-1;i>=0;i--)
            {
                int k = lenb - 1 - i;
                for(int j = lena-1;j >=0;j--)
                {
                    ans = s[k] + b[i] * a[j];
                    s[k] =  ans < 10 ? ans:ans%10;
                    k++;
                    s[k] = s[k] + ans/10;
                }
            }
    //        for(int i=0;i < 1000;i++)
    //            cout << s[i];
    
            int m = 1000;
            while(s[m] == 0)
                m--;
            while(m+1)
            {
                cout << s[m];
                m--;
            }
    
        }
        return 0;
    }

    当我想用上次高精度减法的string模板的时候,发现了n多个bug,首先就是string之所以可以用于高精度的减法是因为字符和数组的差是一样的,而实际的数字是数字+48(或者其他什么东西),反正string的坑就是这个。还是用char进行初始化靠谱。

  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/cunyusup/p/7847311.html
Copyright © 2011-2022 走看看