不是VIP会员,不能显示答案

题目解答

题目:
[问题描述] 在进行正整数的除法运算时,可以通过减法来实现。
例如x?y=Q..R(Q:商,R:余数)可通过下列的方式实现:
q:=0; r:=x;
while r>=y do begin r:=r-y; q:=q+1 end;
结果,商在q中,余数在r中。

[算法说明] 上面的算法有一个缺点,就是当x比较大、y比较小时,则运算的次数非常多,速度太慢。为提高速度,下面给出改进的算法:先找一个非常接近x的数w,且满足:w=y?2k,y?2 k-1<=x<w,然后通过减法与移位的运算,以较少的运算次数完成除法。

[程序清单]
      program exp3(input,output)
                   var  x,y,w,r,q:integer;
                 Begin
                    readln(x);
                    r:=x;
                            W:=Y       
                   while  w<=r  do      W:=W+W     
                   q:=0;
                   while      W>Y     do
                      begin
                         w:=w div 2;
                              Q:=Q+Q     
                         if r>=w then begin
                                          Q:=Q+1    ;
                                      R:=    R-W    ;
                                    end;
                       end;
                          writeln(q, ‘…’, R);
                 End.
考点:
分析:
解答:
评论:
老师: