結果

問題 No.2972 確率的素数判定
ユーザー hato336hato336
提出日時 2024-11-29 21:38:15
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 353 ms / 2,000 ms
コード長 1,212 bytes
コンパイル時間 147 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 96,768 KB
最終ジャッジ日時 2024-11-29 21:38:23
合計ジャッジ時間 7,383 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 188 ms
96,000 KB
testcase_01 AC 199 ms
96,256 KB
testcase_02 AC 193 ms
96,268 KB
testcase_03 AC 194 ms
96,256 KB
testcase_04 AC 190 ms
96,412 KB
testcase_05 AC 191 ms
96,256 KB
testcase_06 AC 194 ms
96,256 KB
testcase_07 AC 201 ms
96,460 KB
testcase_08 AC 200 ms
96,384 KB
testcase_09 AC 203 ms
96,256 KB
testcase_10 AC 194 ms
96,384 KB
testcase_11 AC 198 ms
96,128 KB
testcase_12 AC 202 ms
96,128 KB
testcase_13 AC 192 ms
96,256 KB
testcase_14 AC 202 ms
96,128 KB
testcase_15 AC 228 ms
96,696 KB
testcase_16 AC 326 ms
96,768 KB
testcase_17 AC 340 ms
96,584 KB
testcase_18 AC 353 ms
96,668 KB
testcase_19 AC 323 ms
96,512 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random
#sys.setrecursionlimit(10**9)
#sys.set_int_max_str_digits(0)
def MillerRabin_64bit(x):
    if x <= 1:
        return False
    if x == 2:
        return True
    if x % 2 == 0:
        return False
    if x < 1 << 30:
        test = [2, 7, 61]
    else:
        test = [2,325,9375,28178,450775,9780504,1795265022]
    s = 0
    d = x - 1
    while d & 1 == 0:
        s += 1
        d >>= 1
    for i in test:
        if x <= i:
            return True
        y = pow(i,d,x)
        if y == 1 or y == x - 1:
            continue
        c = 0
        for j in range(s-1):
            y = y * y % x
            if y == x - 1:
                c = 1
                break
        if not c:
            return False
    return True
input = sys.stdin.readline
#n = int(input())
#alist = list(map(int,input().split()))
#alist = []
#s = input()
t = int(input())
a = [1 if MillerRabin_64bit(i) else 0 for i in range(100000+10)]
a = list(itertools.accumulate(a))
def solve():
    n,p,q = map(int,input().split())

    x = a[n]
    print((p/100 * x/n) / (p/100 * x/n + (100-q)/100 * (n-x)/n))

for i in range(t):
    solve()
0