みなさんこんにちは、ほむほむです。
今回はAtCoder Beginner Contest 173の問題A~問題Dまでの復習投稿です。
【問題A】
あなたは、室温が30度以上のとき、またそのときに限り、冷房の電源を入れます。今の室温はX度です。冷房の電源を入れますか?という問題です。
シンプルにXが30以上であるかどうか、条件分岐を行えば良いです。
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
X := getStdinInt()
if X >= 30 {
fmt.Printf("Yes\n")
return
}
fmt.Printf("No\n")
}
var sc = bufio.NewReaderSize(os.Stdin, 1024*1024*10)
func getStdin() string {
return readLine()
}
func getStdinInt() int {
str := getStdin()
rtn, _ := strconv.Atoi(str)
return rtn
}
func readLine() string {
buf := make([]byte, 0, 0)
for {
l, p, _ := sc.ReadLine()
buf = append(buf, l...)
if !p {
break
}
}
return string(buf)
}
【問題B】
2次元平面上にN個の点があります。i個目の点の座標は(X_i, Y_i)です。
これらのうち、原点からの距離がD以下であるような点は何個ありますか?
なお、座標(p, q)にある点と原点の距離は $$ \sqrt{p^2+q^2} $$ で表されます。
この問題は、各(X_i, Y_i)の座標が問題文の式より原点との距離がD以下であるものをシンプルに数え上げれば十分間に合います。
package main
import (
"bufio"
"fmt"
"math"
"os"
"strconv"
"strings"
)
func main() {
N, D := getStdinInt2()
ans := 0
for i := 0; i < N; i++ {
X, Y := getStdinInt2()
if dis(X, Y) <= float64(D) {
ans++
}
}
fmt.Printf("%d\n", ans)
}
func dis(x, y int) float64 {
return math.Sqrt((float64)(x*x + y*y))
}
var sc = bufio.NewReaderSize(os.Stdin, 1024*1024*10)
func getStdin() string {
return readLine()
}
func getStdinInt() int {
str := getStdin()
rtn, _ := strconv.Atoi(str)
return rtn
}
func getStdinInt2() (int, int) {
list := getStdinIntArr()
return list[0], list[1]
}
func readLine() string {
buf := make([]byte, 0, 0)
for {
l, p, _ := sc.ReadLine()
buf = append(buf, l...)
if !p {
break
}
}
return string(buf)
}
【問題C】
後ほど更新します。
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
K := getStdinInt64()
var i int64 = 0
var temp int64 = 0
for i = 0; i < 1000000; i++ {
temp = (temp*10 + 7) % K
if temp == 0 {
fmt.Printf("%d\n", i+1)
return
}
}
fmt.Printf("%d\n", -1)
}
var sc = bufio.NewReaderSize(os.Stdin, 1024*1024*10)
func getStdin() string {
return readLine()
}
func getStdinInt64() int64 {
str := getStdin()
rtn, _ := strconv.ParseInt(str, 10, 64)
return rtn
}
func readLine() string {
buf := make([]byte, 0, 0)
for {
l, p, _ := sc.ReadLine()
buf = append(buf, l...)
if !p {
break
}
}
return string(buf)
}
【問題D】
後ほど更新します。
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
N := getStdinInt()
c := getStdin()
ridx := N - 1
widx := 0
cnt := 0
for i := 0; widx < N && ridx >= 0; i++ {
if widx > ridx {
break
}
w := -1
if c[widx] == 'W' {
w = widx
} else {
widx++
}
r := -1
if c[ridx] == 'R' {
r = ridx
} else {
ridx--
}
if r != -1 && w != -1 {
widx++
ridx--
cnt++
}
}
fmt.Printf("%d\n", cnt)
}
var sc = bufio.NewReaderSize(os.Stdin, 1024*1024*10)
func getStdin() string {
return readLine()
}
func getStdinInt() int {
str := getStdin()
rtn, _ := strconv.Atoi(str)
return rtn
}
func readLine() string {
buf := make([]byte, 0, 0)
for {
l, p, _ := sc.ReadLine()
buf = append(buf, l...)
if !p {
break
}
}
return string(buf)
}
Superb Blog, das pure Leidenschaft strahlt … Karlie Ange Vergos
Sie-haben einen fantastischen Blog Dank. Zorine Gregor Deragon