結果
問題 |
No.2610 Decreasing LCMs
|
ユーザー |
|
提出日時 | 2025-05-05 16:50:11 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 68 ms / 1,000 ms |
コード長 | 1,571 bytes |
コンパイル時間 | 535 ms |
コンパイル使用メモリ | 82,372 KB |
実行使用メモリ | 76,536 KB |
最終ジャッジ日時 | 2025-05-05 16:50:14 |
合計ジャッジ時間 | 3,063 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 22 |
ソースコード
## https://yukicoder.me/problems/no/2610 import math def is_prime(p): sqrt_p = int(math.sqrt(p)) for q in range(2, sqrt_p + 1): if p % q == 0: return False return True def calc_lcm(a, a2): gcd = calc_gcd(a, a2) return a * a2 // gcd def compare_lcm(p, new_array): a = new_array[0] a2 =new_array[1] lcm1 = calc_lcm(a, p) lcm2 = calc_lcm(a, a2) return lcm1 > lcm2 def calc_gcd(A, B): """ 正の整数A, Bの最大公約数を計算する """ a = max(A, B) b = min(A, B) while a % b > 0: c = a % b a = b b = c return b def main(): N = int(input()) array = [5, 6, 8] primes = {2, 3, 5} for _ in range(3, N): new_array = [] for a in array: new_array.append(a * 2) for p in range(2, 100000): if p not in primes and is_prime(p) and compare_lcm(p, new_array): primes.add(p) array = [p] + new_array break for i in range(N - 1): if array[i] >= array[i + 1]: print("No") return for i in range(N - 2): a = array[i] a2 = array[i + 1] gcd1 = calc_gcd(a, a2) lcm1 = a * a2 // gcd1 a3 = array[i + 2] gcd2 = calc_gcd(a2, a3) lcm2 = a2 * a3 // gcd2 if lcm1 <= lcm2: print(f"No2, lcm1 = {lcm1}, lcm2 = {lcm2}") return print(" ".join(map(str, array))) if __name__ == '__main__': main()