A*B Problem

分析

要用高精度,数组一定要开得大。我做的时候,就是因为数组不够大而和我朋友调试了超久。


const
 maxn=2600;
var
a,b:array[1..maxn]of longint;
c:array[1..2*maxn]of longint;
l1,l2:longint;
procedure init;
var
s1,s2:ansistring;
i:longint;
begin
    fillchar(a,sizeof(a),0);
    fillchar(b,sizeof(b),0);
    fillchar(c,sizeof(c),0);
    readln(s1);
    readln(s2);
    l1:=length(s1);
    l2:=length(s2);
    for i:=l1 downto 1 do
    a[l1-i+1]:=ord(s1[i])-ord('0');
    for i:=l2 downto 1 do
     b[l2-i+1]:=ord(s2[i])-ord('0');
end;
procedure main;
var
i,j:longint;
begin
    for i:=1 to maxn do
    begin
     for j:=1 to maxn do
     begin
         c[i+j-1]:=a[i]*b[j]+c[i+j-1];
         c[i+j]:=c[i+j]+c[i+j-1] div 10;
         c[i+j-1]:=c[i+j-1] mod 10;
     end;
    end;


end;
procedure print;
var
i,j:longint;
begin
    i:=maxn;
    while (c[i]=0)and(i>1) do dec(i);
    for j:=i downto 1 do
    write(c[j]);
end;
begin
    init;
    main;
    print;
end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值