結果

問題 No.1680 Sum and Difference
コンテスト
ユーザー kiyoshiro944
提出日時 2021-09-30 19:03:42
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
WA  
実行時間 -
コード長 718 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 11,598 ms
コンパイル使用メモリ 294,128 KB
実行使用メモリ 294,128 KB
最終ジャッジ日時 2026-04-01 14:30:56
合計ジャッジ時間 14,853 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 2 OLE * 1
other -- * 18
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import (
	"fmt"
)

func main() {
	var a, b int
	fmt.Scan(&a, &b)

	// -A ≤ x + y ≤ A
	// -B ≤ x - y ≤ B
	// ---------------
	// - (A+B) ≤ 2x ≤ A+B
	// - (A+B) / 2 ≤ x ≤ (A+B)/2

	// -A ≤ x + y ≤ A
	// -B ≤ y - x ≤ B
	// ---------------
	// - (A+B) ≤ 2y ≤ A+B
	// - (A+B) / 2 ≤ y ≤ (A+B)/2
	// したがって、xとyの範囲が求まる
	var to int
	to = (a + b) / 2

	result := 0
	for x := 0; x <= to; x++ {
		for y := 0; y <= to; y++ {
			if -a <= x+y && x+y <= a && -b <= x-y && x-y <= b {
				fmt.Println(x, y)
				result += 1
			}
		}
	}

	// 反転したもの(x2)、0, 0が重複するのを考慮する(-1)
	ans := (result*2 - 1) % 1000000007
	fmt.Println(ans)
}
0