AtCoder Beginner Contest 205 振り返り

https://atcoder.jp/contests/abc205

ABCコンテスト3回目の参加。今回のC問題は比較的簡単に解けた。

今回も解けた問題を振り返りたいと思う。

A-kcal

  • この問題はちょっと引っかかった。
  • A*B/100をするだけの問題なのだが、小数点を考えて答えないといけない。
  • そのため、Doubleを使用して小数点を考慮した答えを提出する必要があるが、
  • 小数点が0の場合もあるためそれをトリミングしてあげないと行けないと勘違いしていた。

答えを表す数値を出力せよ。

なお、想定解答との絶対誤差または相対誤差が 10−610−6 以下であれば正解として扱われる。

https://atcoder.jp/contests/abc205/tasks/abc205_a

B – Permutation Check

  • この問題はAを並び替える問題
  • 初めにN個のfalseを持った配列を持たせて、その配列のA-1番目をTrueに書き換える
  • 最後にその[Bool]配列にfalseでフィルター
  • 配列が空になれば全ての配列がTrueであることがわかる。
let line = Int(readLine()!)!
let As = readInts()
var flag: [Bool] = Array(repeating: false, count: line)

for i in As {
    flag[i-1] = true
}

let flag2 = flag.filter {$0 == false}

if flag2.isEmpty {
    print("Yes")
} else {
    print("No")
}

C – POW

  • この問題はAとBの大きさを比較する問題
  • 問題文通りに計算を行うと10^9(10^9) = infinityを計算しないと行けないためDoubleでは計算できない
  • 条件分岐を使って問題を解く。

let (A,B,C) = read3Ints()


if C%2 == 0 {
    if abs(A) > abs(B) {
        print(">")
    }else if abs(A) == abs(B){
        print("=")
    }else if abs(A) < abs(B){
        print("<")
    }
}

if C%2 == 1{
    if A > B {
        print(">")
    }else if A == B {
        print("=")
    }else if A < B {
        print("<")
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です