之前我们讲了高精度加减
今天我们来写乘除
知识点与上次相同,直接放题解
-
A * B 问题
题目ID:3282必做题100分
最新提交:0 分
历史最高:0 分时间限制: 200ms
空间限制: 32768kB
题目描述
时间:0.2s 空间:32M
题目描述:
给你两个十进制数,第一个数的数位最长有1000,第二个数在10^8以内。
输入格式:
第一行输入一个整数
第二行输入一个整数
输出格式:
输出一个整数
样例输入:
12312312312142343254354354
233
样例输出:
2868768768729165978264564482
约定:
A,BA,B都是非负整数
提示:
\color{yellow}代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1,int b;
cin >> s1 ;
cin >> b;
int a[1005]={0};
int c[1005]={0};
//字符串s1倒序存入数组,这时我们要定义len
int len1=s1.size();
int len2=len1+20;
for(int i = 0 ; i < len1; i++)
{
a[len1-i] = s1[i] - '0';
}
for(int i = 0 ; i < len2; i++)
{
c[i] = a[i]*b;
}
//进位
for(int i = 1; i <= len2 ; i++)
{
if(c[i] > 9)
{
c[i+1] = c[i+1] + (c[i]/10);
c[i] = c[i] %10;
}
}
//去0
while(c[len2]==0 &&len2 > 1)
{
len2--;
}
for(int i = len2; i >= 1; i--)
{
cout << c[i];
}
return 0;
}