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

题目解答

题目:
[问题2]:整数n的阶乘写作n !,它是从l到n的所有整数的乘积。阶乘增长的速度很快:13!在大多数计算机上不能用32位的整数来存放。70!已经超出多数浮点类型的范围。你的任务是找出n!最右边的非零位。例如,5!=1*2*3*4*5=120,所以5!的最右非零位为2,同样,7!=1* 2*3*4*5*6* 7=5040,所以7!的最右非零位为4。
输入:一个在1~1000的整数n。
输出:n !的最右非零位。
程序如下:
const max=250;             
var a:array[1..max+1]of word;                     
    n:word;
procedure init;  
begin
  write(‘enter n:’);
  readln(n);
  fillchar(a,sizeof(a),0);
  a[1]:=1;
end;

procedure calc;                                
var i,j;word;
begin
  for i:=2 to n do 或for i:=1 to n do
   begin
     for j:=1 to max do 
      a[j]:=a[j]*i;
     for j:=1 to max do
      begin
       inc(a[j+1],a[j]div 10);
       a[j]:=a[j]mod 10;     
      end;
     end;
   end;

procedure print; 
var i:word;
begin
  i:=j;
   while a[i]=0 do
     inc(i); 
  writeln(a[i]);
end;
begin
  init;       
  calc;      
  print; 
 end.
考点:
分析:
解答:
评论:
老师: