回 帖 发 新 帖 刷新版面

主题:[讨论]再次求助高手!!!能在2点前给我思路么????

昨天 直到5点半多才有人回帖 真想踩啊
新问题:
编个10的9次方之内的高精度乘法程序
急啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。[em6]

回复列表 (共6个回复)

沙发

直接可用长整形啊!
[em1]

板凳

然则,乘数是长整型,结果就不是长整型了.

3 楼

用数组啊

4 楼


设第一个是a(位数m),第二个是b(位数n)
 for i:=1 to m do   {相乘]
  for j:=1 to n do
     inc(a[i+j],a[i]*a[j]);
 for i:=1 to m+n do  {归整]
     a[i+1]:=a[i] div 10;
     a[i]:=a[i] mod 10;  
   

5 楼

[quote]然则,乘数是长整型,结果就不是长整型了.[/quote]
用int64(或者long long)呀

6 楼


Var
   s1,s2:String;
   A,B:Array[1..256] Of Integer;
   i,j,jw:Integer;
Begin
   Readln(s1);
   Readln(s2);
   FillChar(a,SizeOf(a),0);
   FillChar(b,SizeOf(b),0);
   For i:=1 To Length(s1) Do
       A[i]:=Ord(s1[Length(s1)+1-i])-Ord('0');
   For j:=1 To Length(s2) Do
       B[j]:=Ord(s2[Length(s2)+1-j])-Ord('0');
   jw:=0;
   For i:=1 To 256 Do
   Begin
      jw:=a[i]*b[i]+jw;
      a[i]:=jw Mod 10;
      jw:=jw Div 10;
   End;
   For i:=256 DownTo 1 Do
       If A[i]<>0 Then Break;
   For j:=i DownTo 1 Do
       Write(A[j]);
   writeln;
End.
要加分哦[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册