Ruby程序:数字阶乘的n次幂中的尾随零

时间:2016-11-17 18:58:59

标签: c++ ruby

我正在尝试将C ++代码移植到Ruby。 运行脚本会给我一个“执行超时”错误。

这是Ruby代码:

t = gets.to_i
t.times do
    a = gets.to_i
    b = gets.to_i
    c = 0
    j = 5
    until j <= a do
      j*5
      c += a/j
    end 
    puts c*b
end

这是C ++代码:

#include<iostream>

main()
{
  long t, a, b, i = 0, j, c; 
  std::cin >> t;
  for( ; i < t ; i++)
  {
    std::cin >> a >> b;
    c = 0;
    for( j = 5 ; j <= a ; j *= 5) 
      c += a/j;
    std::cout << c * b << '\n';
  }
}

我的意见是:

2
100
10
5
4

我的输出是:

240
4

有两个测试用例:

  1. (100!)^10
  2. 中的零个数
  3. (5!)^4
  4. 中的零个数

1 个答案:

答案 0 :(得分:2)

我会像Ruby一样在Ruby中编写计算:

a = 100
b = 10
((1..a).inject(:*)**b).to_s[/0*$/].size
#=> 240

(1..a).inject(:*)计算a!**b是指数函数,to_s将数字转换为字符串,[/0*$/]提取所有尾随零和size 1}}统计他们......