QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#341460 | #249. Miller Rabin 算法 | WRuperD# | WA | 668ms | 3740kb | C++14 | 1.2kb | 2024-02-29 19:11:37 | 2024-02-29 19:11:38 |
Judging History
answer
// Problem: 40. Miller Rabin 算法
// URL: https://qoj.ac/contest/1536/problem/249
// Writer: WRuperD
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
const long long inf = 1e18;
const int mininf = 1e9 + 7;
#define int __int128
#define pb emplace_back
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
inline void write(int x){if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');}
#define put() putchar(' ')
#define endl puts("")
int quickPower(int a, int b, int p){
int ans = 1, base = a;
while(b){
if(b & 1) ans *= base, ans %= p;
base *= base;
base %= p;
b >>= 1;
}
return ans;
}
bool check(int x){
if(x == 1) return false;
for(int i = 2; i <= min((long long)(x - 1), 100ll); i++){
// write(i), put(), write(quickPower(i, x - 1, x)), endl;
if(quickPower(i, x - 1, x) != 1){
// puts("1");
return false;
}
}
return true;
}
void solve(){
unsigned long long x;
while(cin>>x){
if(check(x)) puts("Y");
else puts("N");
}
}
signed main(){
int t = 1;
while(t--) solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 668ms
memory: 3568kb
input:
996581938833575363 971646509461160317 773155992127361153 161603952726515268 540879144500456953 476831214764178553 784255927154201144 671096087619405061 805545190025269709 339546334309245137 337726347922962343 222956293307015293 809183111090275843 799050063298926344 691718101820598109 646220213113313...
output:
N Y Y N Y Y N Y Y Y Y Y Y N Y N Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y N Y Y N Y Y Y Y Y Y Y N Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ...
result:
ok 15000 lines
Test #2:
score: 0
Accepted
time: 383ms
memory: 3516kb
input:
292094793288448159 456918231632780153 52701684901220791 755430520029564023 202037556396478813 224321375550698537 953758266735232253 68668310674613297 730895589897264853 344428227893888993 521429852982590257 547788290718839273 332181270020381261 876010276438312333 906474115171090099 26200832832269134...
output:
N N Y N N N Y N Y N N N N N Y N Y N Y Y N Y Y N Y N Y N Y N Y N N Y N Y Y Y N N Y N Y Y Y N N N Y N N Y Y N N N N Y N N N N N Y Y N N N N N Y N Y Y Y N N Y N Y N Y N N Y Y N N N N Y Y N Y N N N N Y Y Y N Y N N Y N N Y Y Y Y Y Y Y N Y N N N Y N N N Y N Y N N Y N N N Y Y Y N Y Y Y N Y N N N Y N Y N Y ...
result:
ok 15000 lines
Test #3:
score: -100
Wrong Answer
time: 604ms
memory: 3740kb
input:
37686301288201 83818601792630641 73103085605161 146313732835525609 228087610722516540 343255869017446321 132173451449926849 461798530935794823 171613522570639321 746139393134794441 700705956080852569 186402586980996590 116687280644971921 439801455648601 608187424599317161 582838391995869241 29815648...
output:
Y Y Y Y N Y Y N Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y N N Y Y Y N Y Y Y Y Y Y Y Y Y N N Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y N Y Y N ...
result:
wrong answer 1st lines differ - expected: 'N', found: 'Y'