結果
| 問題 |
No.2324 Two Countries within UEC
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-05-28 14:49:32 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,274 bytes |
| コンパイル時間 | 2,252 ms |
| コンパイル使用メモリ | 173,100 KB |
| 実行使用メモリ | 810,368 KB |
| 最終ジャッジ日時 | 2024-06-22 18:02:30 |
| 合計ジャッジ時間 | 8,416 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 40 MLE * 1 |
ソースコード
import std;
void main () {
long N, M, P, Q;
{
auto buf = readln.split.to!(long[]);
N = buf[0], M = buf[1], P = buf[2], Q = buf[3];
}
solve(N, M, P, Q);
}
void solve (long N, long M, long P, long Q) {
foreach (_; 0..Q) {
auto buf = readln.split.to!(long[]);
long x = buf[0], f = buf[1];
if (x % P != 0) {
// x^{-1}が存在
long inv_x = modinv(x, P);
long modular = (f * inv_x) % P;
// y == modular(MOD P)
if (M < modular) {
writeln(0);
} else if (modular != 0) {
writeln(1 + (M - modular)/P);
} else {
writeln((M - modular)/P);
}
} else {
// x^{-1}が存在しない(任意のyについて親交度が0である)
if (f == 0) {
writeln(M);
} else {
writeln(0);
}
}
}
}
long modpow (long x, long a, const long MOD) {
if (a == 1) {
return x;
}
if (a % 2 == 1) {
return (x * modpow(x, a-1, MOD)) % MOD;
}
long t = modpow(x, a/2, MOD);
return (t * t) % MOD;
}
long modinv (long x, const long MOD) {
return modpow(x, MOD - 2, MOD);
}