QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#341460#249. Miller Rabin 算法WRuperD#WA 668ms3740kbC++141.2kb2024-02-29 19:11:372024-02-29 19:11:38

Judging History

This is the latest submission verdict.

  • [2024-02-29 19:11:38]
  • Judged
  • Verdict: WA
  • Time: 668ms
  • Memory: 3740kb
  • [2024-02-29 19:11:37]
  • Submitted

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'