結果
| 問題 |
No.1318 ABCD quadruplets
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-16 16:24:07 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,412 bytes |
| コンパイル時間 | 270 ms |
| コンパイル使用メモリ | 81,880 KB |
| 実行使用メモリ | 84,976 KB |
| 最終ジャッジ日時 | 2025-04-16 16:24:44 |
| 合計ジャッジ時間 | 4,909 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 11 TLE * 1 -- * 18 |
ソースコード
import sys
import math
def main():
N, M = map(int, sys.stdin.readline().split())
ans = [0] * (N + 1)
for d in range(M + 1):
current_val = d * d
if current_val > N:
continue
sum_d = d
for c in range(M + 1):
sum_cd = sum_d + c
add_c = c * sum_cd
new_val = current_val + add_c
if new_val > N:
continue
remaining_b = N - new_val
if remaining_b < 0:
continue
sum_cd_b = sum_cd # sum_cd = c + d
discriminant_b = sum_cd_b ** 2 + 4 * remaining_b
if discriminant_b < 0:
continue
sqrt_disc_b = math.isqrt(discriminant_b)
if sqrt_disc_b * sqrt_disc_b > discriminant_b:
sqrt_disc_b -= 1
if discriminant_b < 0:
b_max = -1
else:
if (sqrt_disc_b - sum_cd_b) % 2 == 0:
b_max = (sqrt_disc_b - sum_cd_b) // 2
else:
b_max = (sqrt_disc_b - sum_cd_b - 1) // 2
b_max = min(b_max, M)
if b_max < 0:
continue
for b in range(0, b_max + 1):
sum_bcd = sum_cd + b
add_b = b * sum_bcd
new_val2 = new_val + add_b
if new_val2 > N:
continue
remaining_a = N - new_val2
if remaining_a < 0:
continue
sum_bcd_a = sum_bcd
discriminant_a = sum_bcd_a ** 2 + 4 * remaining_a
if discriminant_a < 0:
a_max = -1
else:
sqrt_disc_a = math.isqrt(discriminant_a)
if sqrt_disc_a * sqrt_disc_a > discriminant_a:
sqrt_disc_a -= 1
a_max = (sqrt_disc_a - sum_bcd_a) // 2
a_max = min(a_max, M)
if a_max < 0:
continue
for a in range(0, a_max + 1):
final_val = new_val2 + a * (sum_bcd_a + a)
if final_val <= N:
ans[final_val] += 1
print('\n'.join(map(str, ans)))
if __name__ == "__main__":
main()
lam6er