2025-10-06 22:00:02 +09:00

58 lines
1.0 KiB
Swift

let Mod = 1000000007
func power(base a: Int, exponent b: Int) -> Int {
if b == 0 {
return 1
}
if b == 1 {
return a
}
var half = power(base: a, exponent: b/2)
half = (half * half) % Mod
if b%2 == 1 {
return (a * half) % Mod
}
else {
return half
}
}
func gcd(_ x: Int, _ y: Int) -> Int {
var a = max(x,y)
var b = min(x,y)
while b != 0 {
let r = a%b
a = b
b = r
}
return a
}
if let M = Int(readLine() ?? "") {
var result = 0
for _ in 0..<M {
if let input = readLine(),
let info = input.split(separator: " ").compactMap({Int($0)}) as? [Int],
info.count == 2
{
var N = info[0]
var S = info[1]
let GCD = gcd(N, S)
N /= GCD
S /= GCD
result += S*(power(base: N, exponent: Mod-2))%Mod
result %= Mod
}
}
print(result)
}