1262: 【基础】高精度乘单精度

内存限制:16 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:12 解决:8

题目描述

高精度乘单精度,a*b。 a是一个很大的非负整数,但不超过240位,b是一个非负整数不超过10000,求a*b。

输入

两行数字, 第一行是a,第二行是b。

输出

一行,输出a * b的计算结果。

样例输入 复制

111111111111111111111111111111111111
10

样例输出 复制

1111111111111111111111111111111111110

提示

#include<bits/stdc++.h>
using namespace std;
#define maxn 520
int a[maxn],b,c[maxn];
int main(){
    string A;
    cin>>A;
    cin>>b;
    int lena,lenb=0,lenc;
    lena=A.length();
    for (int i=lena-1;i>=0;i--) {
    	a[lena-i]=A[i]-'0';
	}
	int t=b;
	while(t>0) {
		lenb++;
		t/=10;
	}
	for (int i=1;i<=lena;i++) {
		c[i]+=a[i]*b;
		c[i+1]=c[i]/10;
		c[i]=c[i]%10;
	}
	lenc=lena;
	while(c[lenc+1]>0){
		lenc++;
		c[lenc+1]=c[lenc]/10;
		c[lenc]=c[lenc]%10;
	}
	while (c[lenc]==0)
	    lenc--;	
	for (int i=max(1,lenc);i>=1;i--)
	    cout<<c[i];     
	return 0;
}