結果
| 問題 | No.3485 Find 495-like Number |
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2026-03-27 22:36:26 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 1,777 ms / 5,000 ms |
| コード長 | 1,181 bytes |
| 記録 | |
| コンパイル時間 | 407 ms |
| コンパイル使用メモリ | 85,152 KB |
| 実行使用メモリ | 342,392 KB |
| 最終ジャッジ日時 | 2026-03-27 22:37:36 |
| 合計ジャッジ時間 | 52,854 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 34 |
ソースコード
#python -m pdb a.py B=25*10**6 P=[] C=[0]*B for i in range(2,B): if C[i]<1: P+=[i];j=i*i while j<B:C[j],j=1,j+i length=len(P) import random Q=[2,3,5,7,11,13,17,19,23,29] def MillerRabin(n): global Q assert n>0 if n<2:return 0 if n in Q:return 1 if any(n%p<1 for p in Q):return 0 for t in range(10):Q+=[random.randint(30,n-1)] u,v=n-1,0 while u&1<1:u>>=1;v+=1 for p in Q: m=pow(p,u,n) if m!=1: for e in range(v): if m==n-1:break m=m*m%n else:return 0 return 1 J=lambda:list(map(int,input().split())) L,R=J() for i in range( 1 , length - 2 ): a2 = P[i] * P[i]; if( a2 * P[i+1] * P[i+2] > R ): break; for j in range( i + 1 , length - 1 ): a2b = a2 * P[j] a2bc = a2b * P[j+1] if( a2bc > R ): break; a2bc = a2b * P[length - 1] if( a2bc < L ): c_min = ( ( L + a2b - 1 ) // a2b ) | 1 c_max = R // a2b; assert( c_min > P[length-1] ); for c in range( c_min , c_max + 1 , 2 ): if( MillerRabin( c ) ): exit( print( a2b * c ) ); else: l,r=j,length-1 while l+1<r: m=(l+r)>>1 if( a2b * P[m] < L ):l=m else:r=m a2bc = a2b * P[r]; if( L <= a2bc <= R ): exit( print( a2bc ) ); print( -1 );