結果
問題 | No.2365 Present of good number |
ユーザー |
![]() |
提出日時 | 2023-06-30 22:01:58 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 37 ms / 2,000 ms |
コード長 | 1,111 bytes |
コンパイル時間 | 225 ms |
コンパイル使用メモリ | 82,144 KB |
実行使用メモリ | 56,172 KB |
最終ジャッジ日時 | 2024-07-07 09:48:43 |
合計ジャッジ時間 | 2,571 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 39 |
ソースコード
from collections import *def factorization(n):arr = []temp = nfor i in range(2, int(-(-n**0.5//1))+1):if temp%i==0:cnt=0while temp%i==0:cnt+=1temp //= iarr.append([i, cnt])if temp!=1:arr.append([temp, 1])return arrN, K = map(int, input().split())mod = 10**9 + 7ans = 1D = defaultdict(int)for i, cnt in factorization(N):D[i] += cntwhile K:new = defaultdict(int)if len(D) == 1:if 2 in D or 3 in D:breakif len(D) == 2:if 2 in D and 3 in D:breakK -= 1for k, v in D.items():for i, cnt in factorization(k + 1):new[i] += cnt * vnew, D = D, newif K == 0:ans = 1for k, v in D.items():ans *= pow(k, v, mod)ans %= modprint(ans)else:m = K//2K %= 2D[2] = D[2] * pow(2, m, mod - 1)D[3] = D[3] * pow(2, m, mod - 1)if K:D[2], D[3] = D[3] * 2, D[2]ans = pow(2, D[2], mod) * pow(3, D[3], mod) % modprint(ans)