注意事項
本記事は復習のための日記的なものであり、丁寧な解説を求めている方には不十分かと思われますので、ご了承のほどお願いいたします。
正解済み問題
B - Base K
問題文
こちら問題ページ
解答
入力値を10進法に直して、掛け算して出力。
標準APIにまじ感謝。
let k = Int(readLine()!)!
let ab = readLine()!.split(separator: " ")
print(Int(ab[0], radix: k)! * Int(ab[1], radix: k)!)
C - Multiplication 3
問題文
こちら問題ページ
解答
結構苦戦した。。
少数を扱う場合は誤差が出る可能性があるので、こんな感じで切り分けて解くのが良さそう。
直接計算したら意外と不正値が割と出る。。笑
import Foundation
let input = readLine()!.split(separator: " ").map{ String($0) }
let A = Int(input[0])!
let B = Int(input[1].split(separator: ".").reduce("") { $0 + $1})!
print( A * B / 100)
誤答及び、未解答問題
B - Ruined Square
問題文
こちら問題ページ
未解答
一発正解かなと思ったが、条件が網羅できておらずWA。
そこからは解法が思いつからずに終了。
let positons = readLine()!.split(separator: " ").map{Int($0)!}
let distance = [abs(positons[0] - positons[2]), abs(positons[1] - positons[3])]
print("\(positons[2] - distance[1]) \(positons[3] + distance[0]) \(positons[0] - distance[1]) \(positons[1] + distance[0])")
正答
考え方はあってたぽい。
もっと落ち着いて、整理してコード書いて行ったら解けたかも。
let xy = readLine()!.split(separator: " ").map{ Int($0)! }
let x1 = xy[0]
let y1 = xy[1]
let x2 = xy[2]
let y2 = xy[3]
let x3 = x2-(y2-y1)
let y3 = y2+x2-x1
let x4 = x1-(y2-y1)
let y4 = y1+x2-x1
print(x3,y3,x4,y4)
参考