結果
| 問題 | 
                            No.1312 Snake Eyes
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2020-12-09 01:48:50 | 
| 言語 | Python3  (3.13.1 + numpy 2.2.1 + scipy 1.14.1)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 622 bytes | 
| コンパイル時間 | 201 ms | 
| コンパイル使用メモリ | 12,544 KB | 
| 実行使用メモリ | 11,008 KB | 
| 最終ジャッジ日時 | 2024-09-18 23:13:41 | 
| 合計ジャッジ時間 | 19,512 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 79 WA * 6 | 
ソースコード
import math
N=int(input())
div=[]
for d in range(1,1000000):
    if N%d==0:
        div.append(d)
        div.append(N//d)
ans = N + 1
for d in div:
    n = N // d
    #   1 + a + ... + a^{L-1}
    for L in range(1,60):
        ok = n + 1 if L == 1 else (1+int(math.pow(n, 1/(L-1))))
        ok = min(ok, n + 1)
        ng = d + 1
        while ok - ng > 1:
            m = (ok + ng) // 2
            if (m**L - 1) / (m - 1) >= n:
                ok = m
            else:
                ng = m
        if ok > d and (ok**L - 1) % (ok - 1) == 0 and (ok**L - 1) // (ok - 1) == n:
            ans = min(ans, ok)
print(ans)