結果
問題 | No.719 Coprime |
ユーザー | _polarbear08 |
提出日時 | 2018-07-28 00:20:21 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,630 bytes |
コンパイル時間 | 105 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 43,896 KB |
最終ジャッジ日時 | 2024-07-05 17:21:42 |
合計ジャッジ時間 | 33,047 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | WA | - |
testcase_01 | WA | - |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | WA | - |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | WA | - |
testcase_31 | WA | - |
testcase_32 | WA | - |
testcase_33 | WA | - |
testcase_34 | WA | - |
testcase_35 | WA | - |
testcase_36 | WA | - |
testcase_37 | WA | - |
testcase_38 | WA | - |
testcase_39 | WA | - |
testcase_40 | WA | - |
testcase_41 | WA | - |
testcase_42 | WA | - |
testcase_43 | WA | - |
testcase_44 | WA | - |
testcase_45 | WA | - |
testcase_46 | WA | - |
testcase_47 | WA | - |
testcase_48 | WA | - |
testcase_49 | WA | - |
testcase_50 | WA | - |
testcase_51 | WA | - |
testcase_52 | WA | - |
testcase_53 | WA | - |
testcase_54 | WA | - |
testcase_55 | WA | - |
testcase_56 | WA | - |
testcase_57 | WA | - |
testcase_58 | WA | - |
testcase_59 | WA | - |
testcase_60 | WA | - |
ソースコード
import math import numpy as np def make_prime_list(lower:int, upper:int) -> list: # バリデーション if lower < 0: raise ValueError("lowerは0以上でなければいけません。(lower:{})".format(lower)) elif upper <= lower: raise ValueError("upperはlowerより大きい数でなければいけません。\ (lower:{}, upper:{})".format(lower,upper)) isPrime = [True]*upper primeList = [] # 区間内の数字が0,1のみならここで終了 if upper <= 2: return primeList # 区間内の数字に2以上のものがあるとき isPrime[0] = False isPrime[1] = False # エラトステネスの篩の処理 for n in range(2,int(math.sqrt(upper))+2): if isPrime[n]: res=2*n while res<upper: isPrime[res] = False res += n # 区間内の素数を抽出 for n in range(lower,upper): if isPrime[n]: primeList.append(n) return primeList def getNearestValue(list, num): # リスト要素と対象値の差分を計算し最小値のインデックスを取得 idx = np.abs(np.asarray(list) - num).argmin() return list[idx] N = 48 primeList = make_prime_list(2,N+1) aa = getNearestValue(primeList, int(math.sqrt(N)+1)) bb = getNearestValue(primeList, int(math.sqrt(N))) ans_list = [] for p in primeList: res = p while res*p <= N: res = res*p ans_list.append(res) if aa*bb <= N: print(sum(ans_list) - aa-bb+ aa*bb) else: print(sum(ans_list))