我正在尝试将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
有两个测试用例:
(100!)^10
(5!)^4
答案 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}}统计他们......