高精度合集P

//前言:我发现,最近写的题都有各种高精度,所以说,把写过的贴在这里,有空也可以看一看。

一。高精a+b据说会RE,搞不好是201 
 没啥好讲,细心有耐心就好了。
var
 s:string;
 x,y:array[0..120]of integer;
 i,j,l1,l2:integer;
begin
 readln(s);
 l1:=length(s);
 for i:=l1 downto 1 do
  x[l1-i]:=ord(s[i])-48;
 readln(s);
 l2:=length(s);
 for i:=l2 downto 1 do
  y[l2-i]:=ord(s[i])-48;
 if l1<l2 then l1:=l2;
 for i:=0  to  l1  do
  begin
   x[i]:=x[i]+y[i];
   x[i+1]:=x[i+1]+x[i] div 10;
   x[i]:=x[i] mod 10;
  end;
   j:=120;
   while x[j]=0 do dec(j);
   for i:=j downto 0 do write(x[i]);
end.

二。高精a*b 保证AC的!
还是细心有耐心,毕竟到现在肯定知道原理的。
var
s1,s2:ansistring;
a,b,c:array[1..5000] of integer;
l1,l2,l,i,j,k,x:integer;
begin
 readln(s1);
 readln(s2);
 l1:=length(s1);
 l2:=length(s2);
 l:=l1+l2;
 for i:=1 to l1 do
  a[l1-i+1]:=ord(s1[i])-48;
 for i:=1 to l2 do
  b[l2-i+1]:=ord(s2[i])-48;
 for i:=1 to l1 do
  begin
   x:=0;
    for j:=1 to l2 do
     begin
      c[i+j-1]:=c[i+j-1]+x+a[i]*b[j];
      x:=c[i+j-1] div 10;
      c[i+j-1]:=c[i+j-1]mod 10;
     end;
    c[i+j]:=x;
  end;

 while (c[l]=0)and(l>1) do dec(l);
 for i:=l downto 1 do write(c[i]);
 writeln;
end.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值