QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#590049#249. Miller Rabin 算法xiangjiAC ✓49ms3860kbC++111.6kb2024-09-25 21:14:342024-09-25 21:14:34

Judging History

你现在查看的是最新测评结果

  • [2024-09-25 21:14:34]
  • 评测
  • 测评结果:AC
  • 用时:49ms
  • 内存:3860kb
  • [2024-09-25 21:14:34]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
// #pragma GCC optimize(2)
// #pragma GCC optimize(3,"Ofast","inline")
typedef long long ll;
#define pll pair<ll, ll>
ll N;
ll base[7] = {2, 325, 9375, 28178, 450775, 9780504, 1795265022};

ll power(__int128 a, ll b, ll m)
{
    ll ans = 1;
    a %= m;
    while (b)
    {
        if (b & 1)
            ans = ans * a % m;
        a = a * a % m;
        b >>= 1;
    }
    return ans;
}

bool Miller_Rabin(ll n)
{ // 判断素数
    if (n == 2)
        return true; // 2是素数
    if (n < 2 || !(n & 1))
        return false; // 如果x是偶数或者是0,1,那它不是素数
    ll u = n - 1, k = 0;
    while (!(u & 1))
    {
        k++;
        u >>= 1;
    }
    for (auto it : base)
    {
        if (it % n == 0)
            continue;
        ll v = power(it, u, n);
        if (v == 1 || v == n - 1)
            continue;
        for (int j = 1; j <= k; j++)
        {
            ll last = v;
            v = (__int128)v * v % n;
            if (v == 1)
            {
                if (last != n - 1)
                    return false;
                break;
            }
        }
        if (v != 1)
            return false; // 用费马小定理判断
    }
    return true; // 如果进行多次测试都是对的,那么x就很有可能是素数
}
void solve()
{
    ll x;
    while (cin >> x)
    {
        if (Miller_Rabin(x))
            cout << "Y\n";
        else
            cout << "N\n";
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    solve();
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 46ms
memory: 3572kb

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: 32ms
memory: 3632kb

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: 0
Accepted
time: 11ms
memory: 3608kb

input:

37686301288201
83818601792630641
73103085605161
146313732835525609
228087610722516540
343255869017446321
132173451449926849
461798530935794823
171613522570639321
746139393134794441
700705956080852569
186402586980996590
116687280644971921
439801455648601
608187424599317161
582838391995869241
29815648...

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:

ok 15000 lines

Test #4:

score: 0
Accepted
time: 17ms
memory: 3576kb

input:

37524996401344453
37525085907733993
37525091397104033
37525113078950641
37525124589187073
37525157683455557
37525199043948023
37525222109877577
37525226953298221
37525259363784397
37525364799923431
37525368433484977
37525385480376751
37525430877893551
37525482942628141
37525493960687851
375255005943...

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:

ok 15000 lines

Test #5:

score: 0
Accepted
time: 18ms
memory: 3604kb

input:

723245739019682401
723245866706340671
723246090945604561
723246352143004873
723246673219734913
723246738513052561
723247420392785287
723247522177775827
723247614067685477
723247698405894889
723247738890989761
723247925881512769
723248063125197301
723248128083366901
723248342755190227
723248614316335...

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:

ok 15000 lines

Test #6:

score: 0
Accepted
time: 19ms
memory: 3636kb

input:

971250844965384127
971250976411543033
971251162664749381
971251210275610351
971251238585098507
971251326624493501
971252030784923551
971252481632318471
971252499214789069
971252658880954081
971252709089043401
971252873506894229
971252918907625009
971253322904807251
971253706688543701
971254502032321...

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:

ok 15000 lines

Test #7:

score: 0
Accepted
time: 15ms
memory: 3856kb

input:

975097371418148287
975097379018158177
975098272399702153
975098914621552381
975098941416760309
975098970409909507
975099970219316947
975100563136905217
975100597682316769
975100651225654537
975100655012759497
975101039821060699
975101068247058001
975101132634439177
975101316642410317
975101700693099...

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:

ok 15000 lines

Test #8:

score: 0
Accepted
time: 19ms
memory: 3572kb

input:

978972814118579281
978972937612021549
978973242843932981
978974480980701913
978974489577710953
978974589631755737
978974652838559653
978974658221459201
978974733332204561
978974806453119673
978975038338417369
978975110530630693
978975222405387461
978975882983990251
978975989516617181
978976060640390...

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:

ok 15000 lines

Test #9:

score: 0
Accepted
time: 15ms
memory: 3572kb

input:

982815691526899273
982816054071509621
982817060169508141
982817430437283641
982817460181693753
982817461596064513
982817485076790919
982817582130019357
982817899620348031
982818063245540321
982818404515863917
982818922902003769
982818962551574209
982819103882371901
982819366081816363
982819443060395...

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:

ok 15000 lines

Test #10:

score: 0
Accepted
time: 15ms
memory: 3668kb

input:

986654079350625311
986654424121995397
986654475796632901
986654694060905039
986655094343402881
986655789507565913
986655796720217821
986655894969286081
986656845736427113
986656893630525577
986656899715648481
986656967546105017
986656981419420361
986657020079418001
986657751538639291
986657836955081...

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:

ok 15000 lines

Test #11:

score: 0
Accepted
time: 19ms
memory: 3636kb

input:

990506396486037061
990506434942654297
990506583343038737
990506633090169007
990506821692002869
990507338152078781
990507642857678513
990509266701009901
990509413103916829
990509672526354901
990509839077929941
990509905448558701
990509948480836033
990509955041980081
990510051552449809
990510327054720...

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:

ok 15000 lines

Test #12:

score: 0
Accepted
time: 19ms
memory: 3680kb

input:

994436482283245501
994436834643112771
994437438334877633
994438185016980251
994438518667870537
994438572113239849
994439331088447063
994440181755753253
994440412354207381
994440486375543241
994440532681357841
994440572217582901
994440737643657637
994441422312035101
994441492070689121
994441676618381...

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:

ok 15000 lines

Test #13:

score: 0
Accepted
time: 9ms
memory: 3536kb

input:

998325346159240081
998325547301434393
998326073288529899
998326268408182393
998326321136886799
998326462535387389
998327440063121761
998327468968116311
998327968547706001
998328232689759721
998328353036363983
998328398641461907
998328773289179851
998329620625002751
998329775152828861
998329853754818...

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:

ok 6507 lines

Test #14:

score: 0
Accepted
time: 15ms
memory: 3860kb

input:

100052803951001600
105728860800000000
893853530276283200
6455400775964240
685235886664718720
793482962376918720
758221361453121056
37589855997724840
1128108118059
895139368646464000
483432966915053800
237004108121200000
22178
645282657277920000
813367395538094000
1136069149644000
281785329587500000
...

output:

N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
Y
N
N
N
N
N
N
N
Y
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:

ok 100000 lines

Test #15:

score: 0
Accepted
time: 3ms
memory: 3636kb

input:

7355283904579708
340900868429664088
409813708555172383
798303077978606212
933070571813959595
847644669042501513
846257476787352
234597331314353867
277585039133688524
851204170596626165
594596242764549240
572350511563954970
192135875262875110
246494444316739512
758894357303160432
816417381374096460
2...

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
Y
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
Y
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:

ok 15000 lines

Test #16:

score: 0
Accepted
time: 49ms
memory: 3636kb

input:

905692770808102913
930028507424096257
949143104756121601
980147206984040449
937502850030764033
995429930529636353
932948810307469313
998400035831171009
975907589757296641
937838365703667713
993888142765326337
952675423299305473
959231186122371073
919613148026621311
915833125114740737
993893747187972...

output:

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
N
N
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
Y
N
Y
Y
N
Y
Y
N
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
N
Y
Y
Y
Y
Y
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
...

result:

ok 15000 lines

Test #17:

score: 0
Accepted
time: 3ms
memory: 3564kb

input:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
...

output:

N
Y
Y
N
Y
N
Y
N
N
N
Y
N
Y
N
N
N
Y
N
Y
N
N
N
Y
N
N
N
N
N
Y
N
Y
N
N
N
N
N
Y
N
N
N
Y
N
Y
N
N
N
Y
N
N
N
N
N
Y
N
N
N
N
N
Y
N
Y
N
N
N
N
N
Y
N
N
N
Y
N
Y
N
N
N
N
N
Y
N
N
N
Y
N
N
N
N
N
Y
N
N
N
N
N
N
N
Y
N
N
N
Y
N
Y
N
N
N
Y
N
Y
N
N
N
Y
N
N
N
N
N
N
N
N
N
N
N
N
N
Y
N
N
N
Y
N
N
N
N
N
Y
N
Y
N
N
N
N
N
N
N
N
N
Y
N
...

result:

ok 15000 lines

Test #18:

score: 0
Accepted
time: 15ms
memory: 3624kb

input:

909135097259562682
2
3
5
300914172140004765
27586772282676268
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
891808273166161048
398971097954225213
113
127
131
137
139
149
151
4213617320640392
157
278453033236925382
163
167
173
179
181
712815938968127718
191
193
197
...

output:

N
Y
Y
Y
N
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
N
N
Y
Y
Y
Y
Y
Y
Y
N
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
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
N
Y
Y
Y
Y
Y
N
Y
N
Y
Y
Y
Y
Y
Y
Y
N
Y
N
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
N
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
N
Y
Y
Y
Y
Y
Y
Y
Y
...

result:

ok 15000 lines