結果
問題 | No.3081 Make Palindromic Multiple |
ユーザー |
👑 |
提出日時 | 2025-02-26 21:06:00 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 79 ms / 1,000 ms |
コード長 | 850 bytes |
コンパイル時間 | 2,106 ms |
コンパイル使用メモリ | 81,792 KB |
実行使用メモリ | 73,728 KB |
最終ジャッジ日時 | 2025-03-27 13:25:04 |
合計ジャッジ時間 | 5,860 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 54 |
ソースコード
def factorize(N): F_list = [] for p in range(2, 1000005): e = 0 while N % p == 0: N /= p e += 1 if e > 0: F_list.append([p, e]) if N > 1: F_list.append([N, 1]) return F_list N = int(input()) F_list = factorize(N) two = 0 five = 0 for p, e in F_list: if p == 2: two = e if p == 5: five = e assert two == 0 or five == 0 Y = "" M = 0 if two > 0: X = pow(2, two) sz = len(str(X)) Y += str(X)[::-1] for i in range(2 * (two - sz)): Y += '0' Y += str(X) M = N // X elif five > 0: X = pow(5, five) sz = len(str(X)) Y += str(X)[::-1] for i in range(2 * (five - sz)): Y += '0' Y += str(X) M = N // X else: Y = "1" M = N for [p, e] in F_list: if p == 2 or p == 5: continue ten = 1 for i in range(len(Y)): ten *= 10 ten %= p if ten != 1: M //= p M *= p - 1 print(1) print(Y, int(M))