level 5
编写程序,计算N!以十进制形式表示的数中最右的非零数字,并找出在它右边有几个零。例如12!=1×2×3×4×…×12=479001600 (整形数范围)
2014年01月03日 03点01分
1
level 14
应该先想想算法思想,我觉得应该是很大的求阶层的话应该用高精度计算吧。
1、输入一个数。
2、计算它的阶层(高精度)。
3、找这个数最右边的数。同时,用一个计数器来记录它右边零的个数。高精度是用数组的方法来计算的,所以应该比较好找。
2014年01月04日 06点01分
3
level 12
一个比较好一点的算法(懒得去推更高级的了)
var n,i,r,ans,t:longint;
begin
readln(n);
ans:=0;r:=1;
for i:=1 to n do
begin
t:=i;
while t mod 5=0 do begin inc(ans);t:=t div 5; end;
r:=r*i;
while r mod 10=0 do r:=r div 10;
r:=r mod 10;
end;
writeln(r,' ',ans);
end.
一千万以内半秒可以出来吧
2014年01月12日 14点01分
6