求pascal程序:求n!末尾0的个数以及从右到左第一个非零数字
答案:1 悬赏:0 手机版
解决时间 2021-01-18 03:30
- 提问者网友:缘字诀
- 2021-01-17 13:13
求pascal程序:求n!末尾0的个数以及从右到左第一个非零数字
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-01-17 13:49
var n,i,j,x:longint;
begin
readln(n);
x:=1;
j:=0;
for i:=1 to n do
begin
x:=x*i;//计算阶乘
while x mod 10 = 0 do
begin
x:=x div 10;
inc(j);
end;//去掉末尾的0并计数
x:=x mod 10;//保留最后一个非零数
end;
writeln(x);
writeln(j);
end.追问ln x/ln10什么意思 还有extended这个类型怎么没见过。。能解释下思想么我刚才测试下错了追答额,那个看错题目了,看成算n!去掉末尾的0的位数了。。。我已经改了。至于那个ln x/ln 10是换底公式,log(10,n),extended是real的一种扩展。
现在的答案应该是对的了。
var n,i,j,x:longint;
begin
readln(n);
x:=1;
j:=0;
for i:=1 to n do
begin
x:=x*i;//计算阶乘
while x mod 10 = 0 do
begin
x:=x div 10;
inc(j);
end;//去掉末尾的0并计数
x:=x mod 10;//保留最后一个非零数
end;
writeln(x);
writeln(j);
end.追问我自己用数组做了。。追答.....
begin
readln(n);
x:=1;
j:=0;
for i:=1 to n do
begin
x:=x*i;//计算阶乘
while x mod 10 = 0 do
begin
x:=x div 10;
inc(j);
end;//去掉末尾的0并计数
x:=x mod 10;//保留最后一个非零数
end;
writeln(x);
writeln(j);
end.追问ln x/ln10什么意思 还有extended这个类型怎么没见过。。能解释下思想么我刚才测试下错了追答额,那个看错题目了,看成算n!去掉末尾的0的位数了。。。我已经改了。至于那个ln x/ln 10是换底公式,log(10,n),extended是real的一种扩展。
现在的答案应该是对的了。
var n,i,j,x:longint;
begin
readln(n);
x:=1;
j:=0;
for i:=1 to n do
begin
x:=x*i;//计算阶乘
while x mod 10 = 0 do
begin
x:=x div 10;
inc(j);
end;//去掉末尾的0并计数
x:=x mod 10;//保留最后一个非零数
end;
writeln(x);
writeln(j);
end.追问我自己用数组做了。。追答.....
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯