💥前言
刷刷刷
😉解题报告
💥求阶乘
☘️ 题目描述☘️
🤔一、思路:
(1)整数的二分,感谢梗佬的题解梗佬题解地点,因为阶乘的小技巧可知,阶乘数值可以除出多少个5就可以知道该数,有多少个后缀0作为,所以以后缀0的个数作为二分的比较条件进行二分;
知识点:
小技巧阶乘值有多少个
5
5
5就有多少个后缀
0
0
0;
😎二、代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL check(LL x) {
LL cnt = 0;
while (x) {
cnt += x / 5;
x /= 5;
}
return cnt;
}
LL k;
void solve() {
cin >> k;
LL l = 1, r = 9e18;
while (l < r) {
LL mid = l + (r - l) / 2;
if (check(mid) >= k) r = mid;
else l = mid + 1;
}
// 将后缀0提取出
LL x = check(r);
//判断并输出
cout << (x == k ? r : -1);
}
int main() {
solve();
return 0;
}
💥123
☘️ 题目描述☘️
🤔一、思路:
(1)
(2)
(3)
😎二、代码:
💥完全平方数
☘️ 题目描述☘️
🤔一、思路:
(1)
(2)
(3)