洛谷1303 A*B Problem
本题地址: http://www.luogu.org/problem/show?pid=1303
题目描述
求两数的积。
输入输出格式
输入格式:
两个数
输出格式:
积
输入输出样例
输入样例#1:
1
2
输出样例#1:
2
说明
需用高精
题解
高精度
像高精度加减法运算一样,模拟乘法竖式运算。我们依然采取先计算后进位的策略。
1.输入与存储同加法运算。
2.结果的最大位数是两个因数的位数之和。
3.按照乘法竖式运算进行计算与进位。
4.输出之前处理最高位的进位,最高位的进位可能不止一位。
下面附上代码。
代码
var st1,st2:
ansistring; i,j:
longint; x,lena,lenb,lenc:qword; a,b,c:
array[0..10000] of qword; begin readln(st1); readln(st2); lena:=length(st1); lenb:=length(st2);
for i:=1 to lena do a[lena-i+1]:=ord(st1[i])-48; for i:=1 to lenb do b[lenb-i+1]:=ord(st2[i])-48; for i:=1 to lena do begin x:=
0; for j:=1 to lenb do begin c[i+j-
1]:=a[i]*b[j]+x+c[i+j-1]; x:=c[i+j-
1] div 10; c[i+j-
1]:=c[i+j-1] mod 10; end; c[i+j]:=x;
end; lenc:=lena+lenb;
while (c[lenc]=0)and(lenc>1) do dec(lenc); for i:=lenc downto 1 do write(c[i]); end.
(本文系笔者原创,未经允许不得转载)
转载于:https://www.cnblogs.com/yzm10/p/4753403.html