QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#688543#249. Miller Rabin 算法1372037149WA 9ms3620kbC++231.4kb2024-10-30 10:44:562024-10-30 10:44:56

Judging History

This is the latest submission verdict.

  • [2024-10-30 10:44:56]
  • Judged
  • Verdict: WA
  • Time: 9ms
  • Memory: 3620kb
  • [2024-10-30 10:44:56]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> du;
#define INF 1e16
#define pi acos(-1)
#define mod 100003
#define base 13331
const int N = 100005;
const int MAXN=200005;
const int siz=270;
const int maxnode = 1e6+5;
const int up = 30;
ll n,s[50005],last[100005];
ll qk(ll a, ll b, ll p) {
    ll ans = 1 % p;
    for (a %= p; b; b >>= 1) {
        if (b & 1) ans = ans * a % p;
        a = a * a % p;
    }
    return ans;
}
ll mul(ll a, ll b, ll p) {
    ll ans = 0;
    for (a %= p; b; b >>= 1) {
        if (b & 1) ans = (ans + a) % p;
        a = (a << 1) % p;
    }
    return ans;
}
bool Rabin_Miller(ll a, ll n) {
    if (n == 2 || a >= n) return 1;
    if (n == 1 || !(n & 1)) return 0;
    ll d = n - 1;
    while (!(d & 1)) d >>= 1;
    ll t = qk(a, d, n);
    while (d != n - 1 && t != 1 && t != n - 1) {
        t = mul(t, t, n);
        d <<= 1;
    }
    return t == n - 1 || d & 1;
}
bool isprime(ll n) {
    vector<ll> t;
    t.push_back(2),t.push_back(325),t.push_back(9375),t.push_back(450775),t.push_back(9780504),t.push_back(1795265022);
    if (n <= 1) return false;
    for (ll k : t) if (!Rabin_Miller(k, n)) return false;
    return true;
}
int main(){
    ios::sync_with_stdio(0);
    ll x;
    while(scanf("%lld",&x)!=EOF){
        if(isprime(x))
            cout<<"Y\n";
        else
            cout<<"N\n";
    }
    return 0;
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 9ms
memory: 3620kb

input:

996581938833575363
971646509461160317
773155992127361153
161603952726515268
540879144500456953
476831214764178553
784255927154201144
671096087619405061
805545190025269709
339546334309245137
337726347922962343
222956293307015293
809183111090275843
799050063298926344
691718101820598109
646220213113313...

output:

N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
...

result:

wrong answer 2nd lines differ - expected: 'Y', found: 'N'