結果
問題 |
No.2191 一元二次式 mod 奇素数
|
ユーザー |
![]() |
提出日時 | 2022-11-27 20:46:03 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 411 bytes |
コンパイル時間 | 576 ms |
コンパイル使用メモリ | 68,260 KB |
最終ジャッジ日時 | 2025-02-09 01:38:35 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 27 |
ソースコード
#include <iostream> using namespace std; using ll = long long; ll modpow(ll a, ll n, ll mod) { ll ret = 1; for (n; n > 0; n >>= 1) { if (n & 1) { ret = ret * a % mod; } a = a * a % mod; } return ret; } int main(void) { ll p; cin >> p; ll K = (p - 1) / 2; ll a = p - (((K * K) * 4) + (K * 16) - 1) % p; string ans = (modpow(a, K, p) == 1) ? "YES" : "NO"; cout << ans << endl; return 0; }