結果
問題 |
No.3115 One Power One Kill
|
ユーザー |
![]() |
提出日時 | 2025-04-19 14:06:09 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,223 bytes |
コンパイル時間 | 623 ms |
コンパイル使用メモリ | 69,792 KB |
実行使用メモリ | 26,224 KB |
平均クエリ数 | 2.00 |
最終ジャッジ日時 | 2025-04-19 14:06:14 |
合計ジャッジ時間 | 4,170 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | WA * 20 |
ソースコード
#include <iostream> #include <vector> // 虽然最终逻辑没用到,但包含进来是好习惯 #include <numeric> // 虽然最终逻辑没用到,但包含进来是好习惯 #include <utility> // 如果使用迭代式 gcd 会用到 std::swap int main() { // 选择 A = p-1 和 B = p,其中 p 是一个介于 100 和 10^5 之间的素数。 // 我们选择 p = 101,这是 >= 100 的最小素数。 long long a = 100; // A = p - 1 long long b = 101; // B = p (素数) // 检查约束条件: 100 <= A <= 10^5 且 100 <= B <= 10^5 // 我们的选择满足这些条件。 // 输出 A 和 B,并刷新输出缓冲区。 // 必须刷新以确保评测系统能接收到输出。 std::cout << a << " " << b << std::endl; // 从评测系统读取 K (gcd 值)。 long long k; if (!(std::cin >> k)) { // 处理潜在的输入错误 return 1; } // 核心逻辑依赖于费马小定理。 // X' = X_new^A mod B = X_new^(p-1) mod p. // 我们证明了 Y = A^B mod (10^9+7) 不能被 B=p 整除。 // 因此,gcd(X_new, Y) = K 能被 p 整除 当且仅当 X_new 能被 p 整除。 // // 情况 1: K 能被 B (p) 整除。 // 这意味着 X_new 必须能被 p 整除。 // 那么 X' = X_new^(p-1) mod p = 0^(p-1) mod p = 0 (因为 p-1 >= 1)。 // // 情况 2: K 不能被 B (p) 整除。 // 这意味着 X_new 不能被 p 整除。 // 根据费马小定理, X_new^(p-1) ≡ 1 (mod p)。 // 那么 X' = 1. long long predicted_x_prime; if (k % b == 0) { // 如果 K 能被 p 整除,预测 X' = 0 predicted_x_prime = 0; } else { // 如果 K 不能被 p 整除,预测 X' = 1 predicted_x_prime = 1; } // 输出预测的 X' 值,并刷新输出缓冲区。 std::cout << predicted_x_prime << std::endl; // 从评测系统读取最终结果 (ret=1 表示正确, ret=0 表示错误)。 // 这主要用于测试或提交后验证。 int ret; if (!(std::cin >> ret)) { // 处理潜在的输入错误 return 1; } // 程序本身的逻辑不需要使用 'ret'。 return 0; // 表示成功执行。 }