单点时限: 2.0 sec
内存限制: 256 MB
定义一个函数 FactorialZeros
,计算一个整数阶乘右端 0 的个数。
输入格式
测试程序使用多组数据,运行时,首先输入一个整数,表示测试数据的组数;然后每组输入一个 1 到 20 范围的整数。
输出格式
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0:
等),然后在一行中输出答案。
样例
input
3 1 20 10
output
case #0: 0 case #1: 4 case #2: 2
#include <iostream>
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
class SingleJob {
public:
int num;
long long result =1;
int zeros = 0;
};
int main() {
int jobs, temp;
SingleJob J[10];
// 输入
cin >> jobs;
for(int i = 0; i < jobs; i++) {
cin >> J[i].num;
}
// 输出
for(int i = 0; i < jobs; i++) {
cout << "case #" << i << ":" << endl;
for (int j = J[i].num; j > 0; j--) {
J[i].result = J[i].result * j;
}
// 统计0的个数
while (J[i].result > 0) {
if (J[i].result % 10 == 0) {
J[i].zeros ++;
}
else{
break;
}
J[i].result = J[i].result / 10;
}
cout << J[i].zeros << endl;
}
return 0;
}