Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
In ra số lượng chữ số 0 liên tiếp tính từ cuối của N!
Ví dụ bạn có N = 10, 10!= 3628800. Như vậy, 10! có 2 chữ số 0 liên tiếp tính từ cuối.
Tham khảo lý thuyết : Bậc Của Thừa Số Nguyên Tố Trong N!
Đầu vào
Dòng duy nhất chứa số nguyên dương N
Giới hạn
1≤N≤10^18
Đầu ra
In ra số lượng chữ số 0 liên tiếp tính từ cuối của N!. Kết quả lấy dư với 1000000007.
Ví dụ :
Input 01
10
Output 01
2
Bình luận
include <bits/stdc++.h>
using namespace std;
long long LaySo5(long long n) { if (n == 0) return 0; return n / 5 + LaySo5(n / 5); }
int main() { iosbase::syncwith_stdio(false); cin.tie(NULL);
} Mọi người giúp mình với chứ bài của mình chỉ đúng 9/50 là sao ạ
Code của fen dùng hàm LaySo5 gọi đệ quy liên tục (LaySo5(n / 5)), với n lớn như 10^18 thì số lần gọi có thể lên tới hàng chục lần nên gây stack overflow hoặc timeout với đề bài bắt buộc bạn phải lấy kết quả mod 1000000007, nhưng code fen không làm điều này Code đemo này
include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
int main() { iosbase::syncwith_stdio(false); cin.tie(NULL);
}