AtCoder Regular Contest 112のメモ
前置き
Atcoderをやってみたので、自分用のメモです。
あとから加筆・修正する予定です。
問題
A
Q_A.go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
var sc = bufio.NewScanner(os.Stdin)
func nextInt() int {
sc.Scan()
i, e := strconv.ParseInt(sc.Text(),10,32)
if e != nil {
panic(e)
}
return int(i)
}
func main() {
sc.Split(bufio.ScanWords)
var T int
fmt.Scanf("%d", &T)
var L, R int
var count int
counts := make([]int, T)
for i:=0; i<T; i++{
count = 0
L = nextInt()
R = nextInt()
if (L == 0) && (R == 0){
count = 1
} else {
d := R - L
if (d<=R) && (L<=d){
count = (d-L+1) * (d-L+2) /2
}
}
counts[i] = count
}
for i:=0; i<T; i++{
fmt.Printf("%d\n", counts[i])
}
}
B
Q_B.go
package main
import (
"fmt"
)
func main() {
var B, C int64
fmt.Scanf("%d %d", &B, &C)
var b_0, b_1, b_2, b_3 int64
var A0, A1, A2 int64
b_0 = B - C/2 // 下がり続ける
b_1 = - B - (C-1)/2 // 一周回って下がり続ける
b_2 = B + (C-2)/2 // 一周回って下がり続け、最後に戻る
b_3 = - B + (C-1)/2
if B == 0{
A0 = - b_0 + 1
A1 = 0
A2 = b_2 - B
} else if B > 0{
if (b_0 <= 0){
A0 = B + B
} else {
A0 = B - b_0 + 1
A0 += b_3 + B
}
A1 = - B - b_1 + 1
A2 = b_2 - B
} else {
if (b_1 <= 0){
A1 = -B - B
} else {
A1 = -B - b_1 + 1
A1 += b_2
}
A0 = B - b_0 + 1
A2 = b_3 + B
}
fmt.Printf("%d\n", A0+A1+A2)
}
C
Q_A.go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
var sc = bufio.NewScanner(os.Stdin)
func nextInt() int {
sc.Scan()
i, e := strconv.ParseInt(sc.Text(),10,32)
if e != nil {
panic(e)
}
return int(i)
}
func main() {
sc.Split(bufio.ScanWords)
var T int
fmt.Scanf("%d", &T)
var L, R int
var count int
counts := make([]int, T)
for i:=0; i<T; i++{
count = 0
L = nextInt()
R = nextInt()
if (L == 0) && (R == 0){
count = 1
} else {
d := R - L
if (d<=R) && (L<=d){
count = (d-L+1) * (d-L+2) /2
}
}
counts[i] = count
}
for i:=0; i<T; i++{
fmt.Printf("%d\n", counts[i])
}
}
Q_B.go
package main
import (
"fmt"
)
func main() {
var B, C int64
fmt.Scanf("%d %d", &B, &C)
var b_0, b_1, b_2, b_3 int64
var A0, A1, A2 int64
b_0 = B - C/2 // 下がり続ける
b_1 = - B - (C-1)/2 // 一周回って下がり続ける
b_2 = B + (C-2)/2 // 一周回って下がり続け、最後に戻る
b_3 = - B + (C-1)/2
if B == 0{
A0 = - b_0 + 1
A1 = 0
A2 = b_2 - B
} else if B > 0{
if (b_0 <= 0){
A0 = B + B
} else {
A0 = B - b_0 + 1
A0 += b_3 + B
}
A1 = - B - b_1 + 1
A2 = b_2 - B
} else {
if (b_1 <= 0){
A1 = -B - B
} else {
A1 = -B - b_1 + 1
A1 += b_2
}
A0 = B - b_0 + 1
A2 = b_3 + B
}
fmt.Printf("%d\n", A0+A1+A2)
}
C
覚えてたら後で書きます。
D
覚えてたら後で書きます。
E
覚えてたら後で書きます。
F
覚えてたら後で書きます。
Author And Source
この問題について(AtCoder Regular Contest 112のメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/nogawanogawa/items/980592bd6a5f8ad65d8e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .