毒瘤数学题:双阶乘末尾零的个数
毒瘤数学题:双阶乘末尾零的个数
题目背景
MRC是一位数学高手。于是,冷老师就让MRC来出几套题。
题目描述
MRC经过思考,想出了一道绝世毒瘤题:
求
1!! * 2!! * 3!! *···*n!!
WXY:好好好,你这么出题是吧,好好好。
作为凉心出题人,WXY把题目简化了,只需要输出上面式子的答案的后缀 0 的个数即可。
双阶乘:
(2k+1)!! = (2k+1) * (2k-1) * (2k-3) * ··· *1
(2k)!! =(2k) * (2k-2) * (2k-4) * (2k-6) *··· * 2
输入格式
一个正整数 n 。
输出格式
一个整数,表示答案。
答案可能很大,可使用 __int128。
样例 #1
样例输入 #1
11
样例输出 #1
5
样例 #1 解 释:1!!*2!!3!!···*11!! = 52563198423859200000
提示
数据范围
对于 10% 的数据,n <= 10。
对于 50% 的数据,n <= 10^6。
对于 100% 的数据,1 <=n<= 10^18。
用C++做出这道题(附代码)
#include <iostream>
using namespace std;
int countZero(int n) {
int count = 0;
while (n % 5 == 0) {
count++;
n /= 5;
}
return count;
}
int main() {
int n;
cin >> n;
int ans = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 == 0) {
ans += countZero(i);
}
}
cout << ans << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/quZr 著作权归作者所有。请勿转载和采集!