0
0

More than 1 year has passed since last update.

【競プロ/Swift】まよコン 2023/03/16

Posted at

注意事項

本記事は復習のための日記的なものであり、丁寧な解説を求めている方には不十分かと思われますので、ご了承のほどお願いいたします。

正解済み問題

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)

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0