FACDIV - Chia hết
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
0.5s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift
- Cho số nguyên dương ~n~, hãy cho biết ~L = (n - 1)! + 1~ có chia hết cho ~n~ không?
Input
- Ghi số nguyên dương ~n (1 \le n \le 10^{18})~.
Output
- Nếu ~L~ chia hết cho ~n~ thì in ra
YES, ngược lại thì in raNO.
Sample
Input #1
3
Output #1
YES
Input #2
100
Output #2
NO
Hint
- Giải thích #1: ~L = 1 * 2 + 1 = 3~ -> ~L~ ~mod~ ~3 = 0~.
Bình luận
include <bits/stdc++.h>
using namespace std;
// Modular multiplication to avoid overflow long long mulMod(long long a, long long b, long long mod) { int128 result = (int128)a * b % mod; return (long long)result; }
// Modular exponentiation long long powMod(long long a, long long d, long long mod) { long long result = 1; a %= mod; while (d > 0) { if (d & 1) result = mulMod(result, a, mod); a = mulMod(a, a, mod); d >>= 1; } return result; }
// Deterministic Miller-Rabin for 64-bit integers bool isPrime(long long n) { if (n < 2) return false;
}
int main() { //freopen("FACDIV.INP", "r", stdin); //freopen("FACDIV.OUT", "w", stdout);
}
chỉnh lại thời gian limit