結果

問題 No.3331 Consecutive Cubic Sum
コンテスト
ユーザー ID 21712
提出日時 2025-12-28 13:31:32
言語 Go
(1.25.5)
結果
WA  
実行時間 -
コード長 1,019 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 12,424 ms
コンパイル使用メモリ 238,204 KB
実行使用メモリ 8,680 KB
最終ジャッジ日時 2025-12-28 13:32:09
合計ジャッジ時間 35,393 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 27 WA * 20
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"

func main() {
	var n int
	Scan(&n)
	ans := solve(n)
	Println(len(ans))
	Print(ans...)
}

func solve(n int) (ans []any) {
	sum := 0
	r := 0
	for i := 1; i*i*i<=n; i++ {
		sum +=i*i*i
		r = i
	}
	
	for l := 1; l*l*l<=n; l++ {
		if r < l {
			r = l
			sum = r*r*r
		}
		for sum > n && r > l {
			sum -= r*r*r
			r--
		}
		for sum < n {
			r++
			sum += r*r*r
		}
		if sum == n {
			ans = append(ans, Sprintf("%d %d\n", l, r))
		}
		sum -= l*l*l
	}
	
	return
}

func check() {
	t := make([][]any, 100*100*100+1)
	for l := 1; l <= 100; l++ {
		for r, sum := l, 0; r <= 100; r++ {
			sum += r*r*r
			if sum >= len(t) {
				break
			}
			str := Sprintf("%d %d\n", l, r)
			t[sum] = append(t[sum], str)
		}
	}
	for sum, list := range t {
		if sum == 0 {
			continue
		}
		ans := solve(sum)
		if len(ans) != len(list) {
			println(sum)
			println(len(list))
			println(len(ans))
			println(Sprintf("%#v", list))
			println(Sprintf("%#v", ans))
			panic("unmatch")
		}
	}
}

func init() {
	check()
}
0