永发信息网

Free Pascal高精度乘法高对高

答案:1  悬赏:0  手机版
解决时间 2021-04-04 01:22
Free Pascal高精度乘法高对高
最佳答案
type arr=array[1..1000] of integer; //定义一个数据类型
var a,b:arr; //用来存数的数组
s,s1:string; //用来存数的字符串

function Mul(number1,number2:arr):arr;//乘法计算函数
var i,j,lenNUM1,lenNUM2,bit:integer;
temp:arr;
begin
fillchar(temp,sizeof(temp),0);
//------------
lenNUM1:=1000;
while (number1[lenNUM1]=0)and(lenNUM1>1) do dec(lenNUM1);
lenNUM2:=1000;
while (number2[lenNUM2]=0)and(lenNUM2>1) do dec(lenNUM2);
//-----------计算位数

for i:=1 to lenNUM1 do
for j:=1 to lenNUM2 do
begin
bit:=i+j-1;
temp[bit]:=temp[bit]+number1[i]*number2[j];
temp[bit+1]:=temp[bit+1]+temp[bit] div 10;
temp[bit]:=temp[bit] mod 10;
end;
//相乘,一般背下来就行了
Mul:=temp; //返回结果
end;

procedure print(a:arr); //输出结果的过程
var i,len:integer;
begin
//算长度
len:=1000;
while (a[len]=0)and(len>1) do dec(len);

for i:=len downto 1 do write(a[i]);
//反过来输出
end;

procedure setv(s:string;var a:arr); //将输入的字符串变成数组的过程
var i,j,p:integer;
begin
j:=length(s)+1;
for i:=1 to length(s) do
begin
dec(j);
val(s[j],a[i],p);
end;
//把字符串倒转存入数组
end;

begin
readln(s);
readln(s1);//读入

setv(s,a);
setv(s1,b); //放入数组

print(Mul(a,b)); //相乘并打印
end.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
爱情和酒有关的诗句,有关赏月的心情诗词
如何维修手机屏幕碎了.小妙招
结束友谊应该送怎样的折纸
2012年6月18日至21日,政协十一届全国委员会
《口袋妖怪-白金》鬼龙有两种形态吗?两种有
初一上册英语句型转换,谁帮我找初中英语句式
30岁以上的人容易腰肌疲劳的根源是什么
锋面和气旋的关系
su中用vary渲染后通道怎么设置
表达随心而走的诗句,随心所愿的意思
若把海平面记为0米,向上规定为正,向下规定
海信led39k310nx3d连接到路由器上的网线后不l
特百惠旋风切剁器和料理棒哪个好用
劳动技能竞赛口号,求银行业务知识比赛团队队
樱花抽油烟机上面的导烟板使用时要打开吗?
推荐资讯
求类似楼袭月的妖孽男主
2100除以84怎样巧算
北京首钢总经理吴峥
北京时间2011年3月11日日本州岛以东130公里处
不懂那些用假照的什么心态
黄龙玉现在市场价格是多少
has finished the work ahead of time will b
2011年3月11日日本发生9级大地震。截至26日15
占卜姻缘结果是:“金风玉露,牛郎织女七夕会
虚拟光驱容量的问题
铁血战士大战异形有几部?异形最早一部是几年
丫35a手机缓存失败什么原因下载老是缓存失败
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?