题目描述
给定两个正整数A和B,请你计算A * B的值。
输入格式
共两行,第一行包含整数A,第二行包含整数B。
输出格式
共一行,包含A * B的值。
数据范围
1≤A的长度≤100000,
0≤B≤10000
输入样例:
2
3
输出样例:
6
观众老爷们,如果本思路对您有帮助,求关注一波~~~
思路
乘法的思路
数组A[]: 1 2 3 4 5
数b 25
模拟过程
b * A[i] 25 * 5 + 4 * 25 + 3 * 25 + 2 * 25 + 1 * 25
初始化进位t = 0
计算乘法t += A[i] * b 其中A[i]为数组中的倒数第i个数, b为数, t为进位,同时临时用来存储乘法的结果
计算结果值 t % 10
计算进位值,用于下次计算 t = t / 10
vector<int> C;
int t = 0;
for(int i = 0; i < A.size() || t; i++){
if(i < A.size()) t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
// if(t != 0) C.push_back(t); //集成到上面
// 下一行代码针对 123 * 0 = 000的情况,只需要包括1位0
while(C.size() > 1 && C.back() == 0) C.pop_back();
return C;
java
import java.util.Scanner;
public class Main{
public static void main(String[] args){
String a;
int b;
Scanner sc = new Scanner(System.in);
a = sc.next();
b = sc.nextInt();
char[] A = new char[a.length()];
for(int i = a.length() - 1; i >= 0; i --) A[a.length() - 1 - i] = a.charAt(i);
String s = mul(A, b);
System.out.println(s);
}
public static String mul(char[] A, int b){
int t = 0;
StringBuffer sb = new StringBuffer();
for(int i = 0; i < A.length || t != 0; i++){
if(i < A.length) t += (A[i] - '0') * b;
sb.append(t % 10);
t /= 10;
}
String s = sb.reverse().toString();
int i = 0;
for(; i < A.length - 1; i ++) {
if(s.charAt(i) != '0') break;
}
return s.substring(i, s.length());
}
}
python
def mul(A, b):
C = list()
t = 0
i = 0
while(i < len(A)):
t += A[i] * b
C.append(t % 10)
t = int(t / 10)
i += 1
if(t != 0): C.append(t)
C = C[::-1]
#处理 * 0 的情况
while(len(C) > 1 and C[0] == 0):
C.pop(0)
return C
def main():
a = list(map(int, input()))
b = int(input())
A = a[::-1]
res = mul(A, b)
print(''.join(map(str, res)))
main()
c++
#include <iostream>
#include <vector>
using namespace std;
vector<int> mul(vector<int> &A, int b){
vector<int> C;
int t = 0;
for(int i = 0; i < A.size() || t; i++){
if(i < A.size()) t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
// if(t != 0) C.push_back(t); //集成到上面
while(C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
int main(){
string a;
int b;
cin >> a >> b;
vector<int> A;
for(int i = a.size() - 1; i >= 0; i --) A.push_back(a[i] - '0');
auto C = mul(A, b);
for(int i = C.size() - 1; i >= 0; i --) printf("%d", C[i]);
return 0;
}
python干嘛要写高精度哈哈哈
哈哈,确实,不过还是补充了一下