結果
| 問題 | No.3332 Consecutive Power Sum (Small) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-02 02:23:37 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,521 bytes |
| 記録 | |
| コンパイル時間 | 171 ms |
| コンパイル使用メモリ | 85,504 KB |
| 実行使用メモリ | 317,140 KB |
| 最終ジャッジ日時 | 2026-05-02 02:23:54 |
| 合計ジャッジ時間 | 13,762 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 1 |
| other | AC * 6 WA * 46 |
ソースコード
## https://yukicoder.me/problems/no/3332
import math
def solve_case_e1(N):
sqrt_n = int(math.sqrt(2 * N))
divisors = []
for p in range(1, sqrt_n +1):
if (2 * N) % p == 0:
q = (2 * N) // p
divisors.append(p)
if q != p:
divisors.append(q)
answers = []
for p in divisors:
q = (2 * N ) // p
if (p + q - 1) % 2 == 0 and (q - p + 1) % 2 == 0:
l = (q - p + 1) // 2
r = (p + q - 1) // 2
if 1 <= l and l <= r:
answers.append((1, l, r))
return answers
def solve_case_overe2(e, N):
n = 1
array = [(0, 0)]
while n ** e <= N:
array.append((n, n ** e))
n += 1
cum_array = []
x = 0
for a, a_ in array:
x += a_
cum_array.append((a, x))
a_map = {}
answer = []
for l, l_e in reversed(cum_array):
if l_e + N in a_map:
r = a_map[l_e + N]
answer.append((e, l + 1, r))
a_map[l_e] = l
return answer
def main():
N = int(input())
answer_list = []
# E = 1 のケース
answer_list.extend(solve_case_e1(N))
# E = 2 以上のケース
max_k = 1
while 2 ** max_k < N:
max_k += 1
for e in range(2, max_k + 1):
answer_list.extend(solve_case_overe2(e, N))
print(len(answer_list))
for e, l, r in answer_list:
print(e, l, r)
if __name__ == "__main__":
main()