讨论 / 代码很精简,结果很悲惨,大牛看看
seekdreamer 2012-07-31 09:47:00
点我顶贴 收藏 删除
program ss;

var i,c,n:longint;

begin

readln(n);

c:=1;

for i:=n downto 1 do

begin

c:=c*n;

while ((c mod 10)=0) do c:=(c div 10);

c:=(c mod 10);

end;

writeln(c);

end.

结果只对了第一个点,呜呜

#1 77@2012-07-31 09:01:00
回复 删除
代码跟我差不多 我也过不了 觉得思想上应该是对的
#2 77@2012-07-31 09:47:00
回复 删除
呃 这样做是不对的

每次运算只保留最后一位非零的数进行计算

这样可能出现的结果是

比如说 912 保留 2

然后 进行 乘15

结果分别是 13680 30

是因为乘的时候产生进位导致前一位也为0

n最大200W 进位产生的影响7,8位的样子 所以保留8位非零的进行运算就行了

查看更多回复
提交回复