Advertisement
saurav_kalsoor

Maths Assignment - KOTLIN

Dec 22nd, 2021
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.45 KB | None | 0 0
  1. // Author : Saurav Kalsoor
  2. // Maths Assignment - KOTLIN
  3.  
  4. import java.util.*
  5.  
  6.  
  7. var sc: Scanner = Scanner(System.`in`)
  8. var list: ArrayList<Long> = ArrayList<Long>()
  9.  
  10. fun main() {
  11.     val n: Long = sc.nextLong()
  12.     val result = mathsAssignment(n)
  13.     println(result)
  14. }
  15.  
  16. fun init() {
  17.     val b = BitSet(36)
  18.     for (i in 0..35) {
  19.         b.set(i)
  20.         for (j in i + 1..35) {
  21.             b.set(j)
  22.             val longArray: LongArray = b.toLongArray()
  23.             list.add(longArray[0])
  24.             b.clear(j)
  25.         }
  26.         b.clear(i)
  27.     }
  28.     Collections.sort(list)
  29. }
  30.  
  31. fun lessThan(n: Long): Long {
  32.     var low = 0
  33.     var high: Int = list.size - 1
  34.     var index = 0
  35.     while (low <= high) {
  36.         val mid = low + (high - low) / 2
  37.         if (list.get(mid) <= n) {
  38.             index = mid
  39.             low = mid + 1
  40.         } else {
  41.             high = mid - 1
  42.         }
  43.     }
  44.     return list.get(index)
  45. }
  46.  
  47. fun greaterThan(n: Long): Long {
  48.     var low = 0
  49.     var high: Int = list.size - 1
  50.     var index = high
  51.     while (low <= high) {
  52.         val mid = low + (high - low) / 2
  53.         if (list.get(mid) >= n) {
  54.             index = mid
  55.             high = mid - 1
  56.         } else {
  57.             low = mid + 1
  58.         }
  59.     }
  60.     return list.get(index)
  61. }
  62.  
  63. fun mathsAssignment(n: Long): Long {
  64.     init()
  65.     val a = lessThan(n)
  66.     val b = greaterThan(n)
  67.     return Math.min(Math.abs(n - a), Math.abs(n - b))
  68.  
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement