結果
| 問題 | No.1237 EXP Multiple! |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-06-04 00:52:13 |
| 言語 | Go (1.26.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,313 bytes |
| 記録 | |
| コンパイル時間 | 14,574 ms |
| コンパイル使用メモリ | 285,300 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-06-04 00:52:32 |
| 合計ジャッジ時間 | 17,837 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 13 WA * 1 RE * 5 |
ソースコード
package main
import . "fmt"
import . "os"
import bf "bufio"
func main() {
rd := bf.NewReader(Stdin)
table := make([]int, 21)
table[0] = 0 // 0 のときは 0^0! = 0^1 = 0 ですね…
for i := 1; i < len(table); i++ {
a := i
for j := 1; j <= i; j++ {
s := 1
for k := 0; k < j; k++ {
s = min(s*a, 1e9+10)
}
a = s
}
table[i] = a
}
println(Sprint(table))
var n int
Fscan(rd,&n)
m := 1
for i := 0; i < n; i++ {
var a int
Fscan(rd,&a)
m = min(m*table[min(a,20)],1e9+10)
}
// 0のとき-1にするの忘れてた
ans := int(1e9+7)%m
if ans == 0 {
ans = -1
}
Println(ans)
}
/*
考察
数日間、TLE解法しか思いつかず
何か高速に階乗の除法なりを求める数学的な方法でもあるのかググってもよくわからずを過ごした…
最終的に思い至ったのが、『誤読しているんじゃないか?』
そう、事実、”誤読”だった・・・
1e9+7"で"割った余りを求めるのだとずっと思っていた…
違った
1e9+7"を"割った余りを求める問題だった…つまり1e9+8以上になったら1e9+7が出力すべき値…
サンプルの出力例には当初から違和感を感じてたけど、その違和感について深く考えず考察つづけたのもいけなかった
*/
ID 21712