forked from ngthanhtrung23/CompetitiveProgramming
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathG.kt
More file actions
47 lines (40 loc) · 946 Bytes
/
G.kt
File metadata and controls
47 lines (40 loc) · 946 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.*
fun gcd(_a: Long, _b: Long): Long {
var a = _a
var b = _b
while (a != 0L) {
var c = a;
a = b % a;
b = c;
}
return b;
}
class F(_x: Long, _y: Long) {
val g = gcd(_x, _y)
val x = _x / g
val y = _y / g
}
fun add(a: F, b: F): F {
return F(a.x * b.y + a.y * b.x, a.y * b.y)
}
fun p10(a: Int): Long {
var res = 1L
for (i in 1..a) {
res *= 10L
}
return res
}
fun main(args: Array<String>) {
var s = readLine()!!.split('.')[1]
s = s.substring(0, s.length - 1)
val (a, b) = s.split('(')
if (a.length == 0) {
val z = F(b.toLong(), p10(b.length) - 1)
println("${z.x}/${z.y}")
} else {
val x = F(a.toLong(), p10(a.length))
val y = F(b.toLong(), p10(a.length) * (p10(b.length) - 1))
val z = add(x, y)
println("${z.x}/${z.y}")
}
}