Ruby程序:在一个数字的阶乘的n次幂后面加零

Ruby Program : Trailing zeros in the nth Power of a numbers factorial

本文关键字:阶乘 数字 程序 一个 Ruby      更新时间:2023-10-16

我正在尝试将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. 尾随零的个数

我会在Ruby中这样写计算:

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

其中(1..a).inject(:*)计算a!, **b为指数函数,to_s将数字转换成字符串,[/0*$/]提取所有尾零,size计数…