結果
| 問題 |
No.1632 Sorting Integers (GCD of M)
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 20:50:10 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,507 bytes |
| コンパイル時間 | 347 ms |
| コンパイル使用メモリ | 81,992 KB |
| 実行使用メモリ | 59,380 KB |
| 最終ジャッジ日時 | 2025-06-12 20:54:16 |
| 合計ジャッジ時間 | 4,069 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | WA * 59 |
ソースコード
import sys
import math
def readints():
return list(map(int, sys.stdin.readline().split()))
def factorize(n):
factors = {}
while n % 2 == 0:
factors[2] = factors.get(2, 0) + 1
n = n // 2
i = 3
max_factor = math.isqrt(n) + 1
while i <= max_factor and n > 1:
while n % i == 0:
factors[i] = factors.get(i, 0) + 1
n = n // i
max_factor = math.isqrt(n) + 1
i += 2
if n > 1:
factors[n] = 1
return factors
def main():
MOD = 10**9 + 7
N = int(sys.stdin.readline())
c = list(map(int, sys.stdin.readline().split()))
S = 0
for i in range(9):
S += (i+1) * c[i]
if S == 0:
print(0)
return
factors = factorize(S)
d = 1
# Check for 2
all_even = True
for i in range(9):
digit = i + 1
if digit % 2 != 0 and c[i] > 0:
all_even = False
break
if 2 in factors and all_even:
d = (d * pow(2, factors[2], MOD)) % MOD
# Check for 5
all_five = True
for i in range(9):
digit = i + 1
if digit != 5 and c[i] > 0:
all_five = False
break
if 5 in factors and all_five:
d = (d * pow(5, factors[5], MOD)) % MOD
# Check for other primes
for p in factors:
if p == 2 or p == 5:
continue
d = (d * pow(p, factors[p], MOD)) % MOD
print(d % MOD)
if __name__ == '__main__':
main()
gew1fw