• 高精度乘法,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进行初始化靠谱。

  • 相关阅读:
    hibernate -inverse
    C3p0实践
    Python3数据结构
    UDP组播
    UDP广播
    线程池代码
    UDP服务器
    epoll反应堆模型代码
    epoll事件模型
    epoll函数
  • 原文地址:https://www.cnblogs.com/cunyusup/p/7847311.html
Copyright © 2020-2023  润新知