题目描述
给定两个正整数 A 和 B,请你计算 A×B 的值。
输入格式
共两行,第一行包含整数 A,第二行包含整数 B。
输出格式
共一行,包含 A×B 的值。
数据范围
1≤A的长度≤100000,
0≤B≤10000
样例
输入样例:
2
3
输出样例:
6
C++ 代码
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <string>
using namespace std ;
typedef long long ll ;
const int N = 100010 ; //定义最大位数
ll x[N],y ; //两个数,由于b小于10000,所以直接用数存
void mul(ll a[],ll b){ //乘,结果存在a中
static ll c[N] ; //定义辅助数组c
memset(c,0,sizeof c) ; //清空c
ll t = 0 ;
for(int i = 0 ; i < N ; i++){ //从小位开始依次乘
t += b * a[i] ;
c[i] = t % 10 ;
t /= 10 ;
}
memcpy(a,c,sizeof c) ; //将c复制到a中
}
void print(ll a[]){ //处理输出
int k = N - 1;
while(k && !a[k]) k-- ; //找到最高位不为0的
while(k >= 0 ) cout << a[k--] ; //从最高位依次输出
cout << endl ;
}
int main(){
string a ;
cin >> a >> y;
reverse(a.begin(),a.end()) ; //逆转
for(size_t i = 0 ; i < a.size() ; i++){
x[i] = a[i] - '0' ;
}
mul(x,y) ; //乘
print(x) ;
return 0 ;
}