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; }