Math

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

import Foundation

class Math{
class func round(num: Double, point: Int) -> Double {
let multiplier = pow(a: 10, b: point)
let roundedValue = (num * Double(multiplier)) + 0.5
let truncatedValue = Int(roundedValue)
return Double(truncatedValue) / Double(multiplier)
}

class func pow(a: Int, b: Int) -> Int {


print(a)
print(b)
if b == 0 {
return 1
}
var result = 1
for _ in 0..<b {
result *= a
}

return result
}

class func divide(a: Int, b: Int) -> Double {


return round(num: (Double(a) / Double(b)), point: 2)
}

class func sqrt(num: Int) -> Double {

if num == 0 || num == 1 {
return Double(num)
}

var left = 0.0


var right = Double(num)

while true {
let mid = (left + right) / 2
let square = mid * mid

if abs(square - Double(num)) < 0.000001 {


return round(num: mid, point: 0)
} else if square < Double(num) {
left = mid
} else {
right = mid
}
}
}
}
let stdout = ProcessInfo.processInfo.environment["OUTPUT_PATH"]!
FileManager.default.createFile(atPath: stdout, contents: nil, attributes: nil)
let fileHandle = FileHandle(forWritingAtPath: stdout)!

guard let a = Int((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)


else { fatalError("Bad input") }
guard let b = Int((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }

guard let num =


Double((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }

guard let point =


Int((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }

guard let num1 =


Int((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }

let dev=Math.divide(a:a,b:b)
let pow=Math.pow(a:a,b:b)
let round=Math.round(num:num,point:point)
let sqrt=Math.sqrt(num:num1)

fileHandle.write(String(dev).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)

fileHandle.write(String(pow).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)

fileHandle.write(String(round).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)

fileHandle.write(String(sqrt).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)

You might also like