QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#818312#9299. ABC Conjectureericmegalovania#AC ✓16ms12760kbC++203.1kb2024-12-17 18:38:172024-12-17 18:38:18

Judging History

This is the latest submission verdict.

  • [2024-12-17 18:38:18]
  • Judged
  • Verdict: AC
  • Time: 16ms
  • Memory: 12760kb
  • [2024-12-17 18:38:17]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;

//#define ONLINE
#ifndef ONLINE
char DEBUG_BUFFER[1000];
#define debug(...) {sprintf(DEBUG_BUFFER,##__VA_ARGS__);\
cerr<<"\033[1;36m"<<DEBUG_BUFFER<<"\033[0;2m"<<"\033[0m";}
#else
#define debug(...) ;
#endif

using LL=long long;
using PII=pair<int,int>;

#define all(x) (x).begin(),(x).end()
#define allr(x) (x).rbegin(),(x).rend()

#define FAST_IO {ios::sync_with_stdio(false);cin.tie(nullptr);}
inline int read(){static int x; cin>>x; return x;}
inline LL readLL(){static LL x; cin>>x; return x;}
mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());

namespace FMF{ //find-max-factor
	using big=__int128_t;
	LL gcd(LL a,LL b){
		return b?gcd(b,a%b):a;
	}
	LL ksm(LL a,LL b,LL p){
		a%=p; LL res=1;
		while(b){
			if(b&1) res=(big)res*a%p;
			a=(big)a*a%p;
			b>>=1;
		}
		return res;
	}
	bool Miller_Rabin(LL p){ //判断素数
		if(p<2) return 0;
		if(p==2 || p==3 || p==5 || p==7 || p==43) return 1;
		LL d=p-1,r=0;
		while(!(d&1)) ++r,d>>=1; //将d处理为奇数
		for(LL k=0;k<10;k++) {
			LL a=rng()%(p-2)+2;
			LL x=ksm(a,d,p);
			if(x==1 || x==p-1) continue;
			for(int i=0;i<r-1;i++){
				x=(big)x*x%p;
				if(x==p-1) break;
			}
			if(x!=p-1) return 0;
		}
		return 1;
	}
	LL Pollard_Rho(LL x){
		LL s=0,t=0,c=rng()%(x-1)+1;
		int step=0,goal=1;
		LL val=1;
		for(goal=1;;goal<<=1,s=t,val=1){ //倍增优化
			for(step=1;step<=goal;step++){
				t=((big)t*t+c)%x;
				val=(big)val*abs(t-s)%x;
				if((step%127)==0){
					LL d=gcd(val,x);
					if(d>1) return d;
				}
			}
			LL d=gcd(val,x);
			if(d>1) return d;
		}
	}
	LL max_factor;
	void fac(LL x){
		if(x<=max_factor || x<2) return;
		if(Miller_Rabin(x)){ //如果x为质数
			max_factor=max(max_factor,x); //更新答案
			return;
		}
		LL p=x;
		while(p>=x) p=Pollard_Rho(x);  //使用该算法
		while((x%p)==0) x/=p;
		fac(x),fac(p); //继续向下分解x和p
	}
}

#define N 1000010
bool notP[N]; int phi[N],mn_p[N];
vector<int>prime;
void init_prime(const int& n=N){//init [1,n-1]
	phi[1]=mn_p[1]=notP[1]=1;
	for(int i=2;i<n;i++){
		if(!notP[i]){
			prime.push_back(mn_p[i]=i);
			phi[i]=i-1;
		}
		for(const int& p:prime){
			if(i>(n-1)/p) break;
			notP[i*p]=1,mn_p[i*p]=p;
			if(i%p==0){
				phi[i*p]=phi[i]*p;
				break;
			}
			phi[i*p]=phi[i]*(p-1);
		}
	}
}

void solve(){
	LL n=readLL(); //n是待分解的大数
	while(n>=N){ //N是用筛法筛的质数的范围
		FMF::max_factor=0;
		FMF::fac(n);
		LL d=FMF::max_factor;
		int cnt=0;
		while(n%d==0){
			n/=d;
			if(++cnt>=2){
				cout<<"yes\n";
				return;
			}
		}
	}
	while(n!=1){
		int d=mn_p[n],cnt=0;
		while(n%d==0){
			n/=d;
			if(++cnt>=2){
				cout<<"yes\n";
				return;
			}
		}
	}
	cout<<"no\n";
}
int main(){
	FAST_IO;
	init_prime();
	for(int T=read();T--;) solve();
	return 0;
}

/* stuff you should look for
* int overflow, array bounds
* special cases (n=1?)
* do smth instead of nothing and stay organized
* WRITE STUFF DOWN
* DON'T GET STUCK ON ONE APPROACH
*/

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 7ms
memory: 12728kb

input:

3
4
18
30

output:

yes
yes
no

result:

ok 3 token(s): yes count is 2, no count is 1

Test #2:

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

input:

10
4
9
16
25
36
49
64
81
100
121

output:

yes
yes
yes
yes
yes
yes
yes
yes
yes
yes

result:

ok 10 token(s): yes count is 10, no count is 0

Test #3:

score: 0
Accepted
time: 10ms
memory: 12732kb

input:

10
2
3
5
7
11
13
17
19
23
29

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #4:

score: 0
Accepted
time: 11ms
memory: 12536kb

input:

10
6
15
35
77
80
91
143
75
101
99

output:

no
no
no
no
yes
no
no
yes
no
yes

result:

ok 10 token(s): yes count is 3, no count is 7

Test #5:

score: 0
Accepted
time: 10ms
memory: 12496kb

input:

10
21271165
444231408
946974099
681758708
325191092
830145169
277367584
968476155
88497006
617591195

output:

no
yes
no
yes
yes
no
yes
no
no
no

result:

ok 10 token(s): yes count is 4, no count is 6

Test #6:

score: 0
Accepted
time: 8ms
memory: 12656kb

input:

10
651358344
602420360
725327998
572443267
457046153
697433905
487646237
392673032
555857464
945521644

output:

yes
yes
no
no
no
yes
no
yes
yes
yes

result:

ok 10 token(s): yes count is 6, no count is 4

Test #7:

score: 0
Accepted
time: 7ms
memory: 12532kb

input:

10
906018865
665033186
607653882
668356701
901353080
120481633
280656150
128862688
638961463
105591399

output:

no
no
yes
no
yes
no
yes
yes
no
no

result:

ok 10 token(s): yes count is 4, no count is 6

Test #8:

score: 0
Accepted
time: 7ms
memory: 12508kb

input:

10
65445443
255551484
204787672
662332104
550012352
144811698
715122120
886333345
697093994
539928501

output:

no
yes
yes
yes
yes
no
yes
no
no
yes

result:

ok 10 token(s): yes count is 6, no count is 4

Test #9:

score: 0
Accepted
time: 7ms
memory: 12656kb

input:

10
510848743
55465355
35314940
54709725
720341191
935607553
429552439
180835
749216312
923321369

output:

no
no
yes
yes
no
no
no
no
yes
no

result:

ok 10 token(s): yes count is 3, no count is 7

Test #10:

score: 0
Accepted
time: 11ms
memory: 12644kb

input:

10
279828861859656668
779001228754992308
70180545249969207
602056351848582074
473743600510371898
884856863590340942
740404865423461786
254589470248048234
735418525187794654
19320655148995042

output:

yes
yes
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 2, no count is 8

Test #11:

score: 0
Accepted
time: 8ms
memory: 12600kb

input:

10
248100920920522972
709936117347778444
459577405205914080
514672244191507030
139155451158260882
213138886200801579
106206898325780866
131486604837012608
653930230455423892
139505921637452876

output:

yes
yes
yes
no
no
yes
no
yes
yes
yes

result:

ok 10 token(s): yes count is 7, no count is 3

Test #12:

score: 0
Accepted
time: 4ms
memory: 12460kb

input:

10
774335048511012340
518965669654910057
456514773309199171
737863115914475813
697790523628491367
624324214072353799
576234677259441715
493566595158562629
518740639905632542
723857251834502731

output:

yes
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 1, no count is 9

Test #13:

score: 0
Accepted
time: 7ms
memory: 12732kb

input:

10
746268431380487389
524178555603669586
18759721267348523
518880659011666149
642159149181545555
399568396177004794
320017260154218612
644997645232057748
386637235567659791
458182658511422378

output:

no
no
no
yes
yes
no
yes
yes
no
no

result:

ok 10 token(s): yes count is 4, no count is 6

Test #14:

score: 0
Accepted
time: 5ms
memory: 12612kb

input:

10
933397525551490748
576951839287405875
451486557641150171
767869673683059255
389890830833486456
378618686275821928
798952868585132570
993975228856643424
124136243135383452
883325348855313052

output:

yes
yes
no
no
yes
yes
no
yes
yes
yes

result:

ok 10 token(s): yes count is 7, no count is 3

Test #15:

score: 0
Accepted
time: 8ms
memory: 12760kb

input:

10
142547841254232
47854125478695
14525418745256
25412545659642
66524558844142
96568547411254
14254145517454
35524521455848
14255174526963
11452544121544

output:

yes
no
yes
no
no
no
no
yes
no
yes

result:

ok 10 token(s): yes count is 4, no count is 6

Test #16:

score: 0
Accepted
time: 16ms
memory: 12580kb

input:

10
996491788296388609
998244359987710471
998244361984199177
993244859952713971
993244861939203677
991501065653565109
991501562275991609
996492287418565109
996492786540991609
986535338010991609

output:

yes
no
no
no
no
no
no
no
yes
yes

result:

ok 10 token(s): yes count is 3, no count is 7

Test #17:

score: 0
Accepted
time: 13ms
memory: 12624kb

input:

10
903887901943817851
851247006919432117
919722283032763471
813440365584485521
882865661919651791
910336786263475913
886164039929921029
939010110792302767
870233819457687473
848131007416939777

output:

no
no
no
yes
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 1, no count is 9

Test #18:

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

input:

10
835340052889887691
882050214742719557
956200700734221251
904169343239304203
863340778844950207
891950196387379699
828795647431900943
859506290505387449
899701754897659979
864812216762014253

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #19:

score: 0
Accepted
time: 12ms
memory: 12660kb

input:

10
937045348389519233
917861821069527241
853830881092139933
925942273470477919
864192191576296049
924924805832632331
922601114604837757
865189184621142377
810915387784069681
888699713123099173

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #20:

score: 0
Accepted
time: 11ms
memory: 12760kb

input:

10
954695934802062421
928293474552035987
881887067877256247
883003085267505011
912334294055532781
905004098122367039
904611857774338939
865050043975560907
866170490664542059
878270013492173387

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #21:

score: 0
Accepted
time: 11ms
memory: 12528kb

input:

10
863287381806610583
897060909503816381
847532274494783321
916539028167187829
948518075135486161
892501899295334311
970235035102296793
837318859665480457
915965457572353379
895158157552955773

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #22:

score: 0
Accepted
time: 8ms
memory: 12536kb

input:

10
919302001859835031
947340380138089009
900556914498219493
969704550604426279
956992278889442207
987516654128597423
918322478734791233
931103932576667281
969704550604426279
912231986741863301

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #23:

score: 0
Accepted
time: 8ms
memory: 12728kb

input:

10
986944548782890903
923962410451485991
952106884898696959
907530076115634017
976681729160218187
992802037127004589
942660210777127993
902827937085172543
922822560806710309
910720471852200869

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #24:

score: 0
Accepted
time: 8ms
memory: 12648kb

input:

10
977938944616392739
991018971487700887
959433565239483101
938750532582460177
945778797339850751
976877969599178197
940145114745959443
965499754836427177
977353167106372817
920763506622625117

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #25:

score: 0
Accepted
time: 10ms
memory: 12504kb

input:

10
932214518129214889
909898103783887369
956740019766652469
921494971682440147
986908544799827189
946604456289732613
924189644989672057
933389877512177959
973338438985234457
913889519530749173

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #26:

score: 0
Accepted
time: 8ms
memory: 12532kb

input:

10
994056263547575957
919379339693933303
985741487233972009
919379339693933303
941097907430752373
994056263547575957
939407689956239011
967464086825851847
933164994772745347
922924266205383287

output:

no
no
no
no
no
no
no
no
no
no

result:

ok 10 token(s): yes count is 0, no count is 10

Test #27:

score: 0
Accepted
time: 12ms
memory: 12532kb

input:

2
1
1000000000000000000

output:

no
yes

result:

ok 2 token(s): yes count is 1, no count is 1

Extra Test:

score: 0
Extra Test Passed