結果
問題 | No.1253 雀見椪 |
ユーザー |
|
提出日時 | 2020-10-09 22:09:17 |
言語 | Kotlin (2.1.0) |
結果 |
AC
|
実行時間 | 634 ms / 2,000 ms |
コード長 | 3,271 bytes |
コンパイル時間 | 16,383 ms |
コンパイル使用メモリ | 456,628 KB |
実行使用メモリ | 83,008 KB |
最終ジャッジ日時 | 2024-07-20 11:47:16 |
合計ジャッジ時間 | 23,009 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 14 |
ソースコード
import java.io.BufferedReaderimport java.io.InputStreamimport java.io.InputStreamReaderimport java.io.PrintWriterimport java.util.*// ModInt// regionclass ModInt(x: Long) {companion object {const val MOD = 1000000007L//const val MOD = 998244353L}val x = (x % MOD + MOD) % MODoperator fun plus(other: ModInt): ModInt {return ModInt(x + other.x)}operator fun minus(other: ModInt): ModInt {return ModInt(x - other.x)}operator fun times(other: ModInt): ModInt {return ModInt(x * other.x)}operator fun div(other: ModInt): ModInt {return this * other.inv()}fun pow(exp: Long): ModInt {if (exp == 0L) return ModInt(1L)var a = pow(exp shr 1)a *= aif (exp and 1L == 0L) return areturn this * a}fun inv(): ModInt {return this.pow(MOD - 2)}override fun equals(other: Any?): Boolean {if (this === other) return trueif (javaClass != other?.javaClass) return falseother as ModIntif (x != other.x) return falsereturn true}override fun hashCode(): Int {return x.hashCode()}override fun toString(): String {return "$x"}}val fac = mutableListOf<ModInt>()val invfac = mutableListOf<ModInt>()fun fact(n: Long, b: Boolean): ModInt {if (fac.count() == 0) {fac.add(ModInt(1))invfac.add(ModInt(1))}while (fac.count() <= n) {fac.add(fac.last() * ModInt(fac.count().toLong()))invfac.add(fac.last().inv())}return if (b) {fac[n.toInt()]} else {invfac[n.toInt()]}}fun comb(n: Long, k: Long): ModInt {return fact(n, true) * fact(k, false) * fact(n - k, false)}fun comb2(n: Long, k: Long): ModInt {var ans = ModInt(1)for (i in 0 until k) {ans = ans * ModInt(n - i) / ModInt(k - i)}return ans}// endregionfun PrintWriter.solve(sc: FastScanner) {val t = sc.nextInt()for (_i in 0 until t) {val n = sc.nextLong()val ag = sc.nextLong()val bg = sc.nextLong()val ac = sc.nextLong()val bc = sc.nextLong()val ap = sc.nextLong()val bp = sc.nextLong()val g = ModInt(ag) / ModInt(bg)val c = ModInt(ac) / ModInt(bc)val p = ModInt(ap) / ModInt(bp)val gn = g.pow(n)val cn = c.pow(n)val pn = p.pow(n)val gc = (g + c).pow(n) - gn - cnval gp = (g + p).pow(n) - gn - pnval cp = (c + p).pow(n) - cn - pnprintln(ModInt(1) - gc - gp - cp)}}fun main() {val writer = PrintWriter(System.out, false)writer.solve(FastScanner(System.`in`))writer.flush()}class FastScanner(s: InputStream) {private var st = StringTokenizer("")private val br = BufferedReader(InputStreamReader(s))fun next(): String {while (!st.hasMoreTokens()) st = StringTokenizer(br.readLine())return st.nextToken()}fun nextInt() = next().toInt()fun nextLong() = next().toLong()fun nextLine() = br.readLine()fun nextDouble() = next().toDouble()fun ready() = br.ready()}