高精乘

var

i,j,la,lb,len:integer;

s1,s2:string;

m:longint;

a,b,c:array[1..250] of integer;

begin

readln(s1);

la:=length(s1);

readln(s2);

lb:=length(s2);

for i:=1 to la do

a[i]:=ord(s1[la-i+1])-48;

for i:=1 to lb do

b[i]:=ord(s2[lb-i+1])-48;

for i:=1 to la do

for j:=1 to lb do

c[i+j-1]:=c[i+j-1]+a[i]*b[j];

len:=la+lb;

for i:=1 to len do

begin

c[i+1]:=c[i+1]+c[i] div 10;

c[i]:=c[i] mod 10;

end;

while c[len]=0 do dec(len);

m:=c[len];

while m>0 do

begin

c[len]:=m mod 10;

m:=m div 10;

inc(len);

end;

for i:=len-1 downto 1 do

write(c[i]);

writeln;

end.
代码二: Const

    SIZE = 200+10;

Type

    hugeint = Record

        len : Integer;

        num : Array[1..SIZE] Of int64;

    End;

var a:hugeint;

    s1:string;

    i:integer;

    x:longint;

 procedure lowmul(a:hugeint;x:longint);

   var

    i:longint;

    ans:hugeint;

  begin

   fillchar(ans.num,sizeof(ans.num),0);

   ans.len:=a.len;

   for i:=1 to ans.len do ans.num[i]:=a.num[i]*x;

   for i:=1 to ans.len do

    begin

      inc(ans.num[i+1],ans.num[i] div 10);

      ans.num[i]:=ans.num[i] mod 10;

    end;



   while ans.num[ans.len+1]>0 do

    begin

     inc(ans.len);

     inc(ans.num[ans.len+1],ans.num[ans.len] div 10);

     ans.num[ans.len]:=ans.num[ans.len] mod 10;

    end;

    for i:=ans.len downto 1 do write(ans.num[i]);

    writeln;

  end;





 procedure datain;

   begin

    assign(input,'lowmul.in');  assign(output,'lowmul.out');

    reset(input); rewrite(output);

    readln(s1);

    readln(x);

    a.len:=length(s1);

    for i:=1 to a.len do  a.num[i]:=ord(s1[a.len-i+1])-ord('0');

 end;

 begin

   datain;

   lowmul(a,x);

   close(input);close(output);

 end.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值