高精度乘法-给定两个正整数A和B,请你计算A * B的值。 输入格式 共两行,第一行包含整数A,第二行包含整数B。 输出格式 共一行,包含A * B的值。 数据范围 1≤A的长度≤100000,

#include<iostream>
#include<cstring>
using namespace std;
const int N = 100010;
char s1[N];
int c[N], a[N];
int b;
int main()
{
    
    
    cin >> s1;
    cin >> b;
    int l = strlen(s1);
    for (int i = l - 1, j = 0; i >= 0;j++,i--){
    
    
        a[j] = s1[i]-'0';
    }
    int t=0;
    int i;
     //如果乘的a数组结束或 或者暂存值的t结束了退出
    for(i=0;i<l||t;i++){
    
    
        //乘法是否结束
        if(i<l) t+=a[i]*b;
        //转存值
        c[i]=t%10;
        t/=10;
    }
    //去除前缀零   0023*0=0
    while(c[i-1]==0&&i>1)i--; 
    for (int j = i-1; j >= 0; j--)
    {
    
    
        cout << c[j];
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_46443659/article/details/109958637
今日推荐