题目描述
N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!=1*2*3*4*5=120所以5!的最后面的非零位是2,7!=1*2*3*4*5*6*7=5040,所以最后面的非零位是4。
PROGRAM NAME: fact4
INPUT FORMAT
共一行,一个整数不大于4,220的整数N。
SAMPLE INPUT (file fact4.in)
7
OUTPUT FORMAT
共一行,输出N!最后面的非零位。
SAMPLE OUTPUT (file fact4.out)
4
输入
输出
样例输入
样例输出
数据范围限制
这道题真的水,我好奇怎么是usaco的三部分的题
我猜第一部分随便来道题都比这个难吧…………
代码:
var
n,ans:longint;
begin
readln(n);
ans:=1;
while n<>0 do
begin
ans:=ans*n;
while ans mod 10=0 do ans:=ans div 10;
ans:=ans mod 1000;
dec(n);
end;
writeln(ans mod 10);
end.