結果

問題 No.1237 EXP Multiple!
コンテスト
ユーザー ID 21712
提出日時 2026-06-04 00:49:35
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
WA  
実行時間 -
コード長 1,183 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 15,678 ms
コンパイル使用メモリ 277,212 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-06-04 00:49:58
合計ジャッジ時間 14,659 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 14 WA * 5
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"
import . "os"
import bf "bufio"

func main() {
	rd := bf.NewReader(Stdin)
	
	table := make([]int, 21)
	table[0] = 1
	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)
	}
	Println(int(1e9+7)%m)
}

/*
考察

数日間、TLE解法しか思いつかず
何か高速に階乗の除法なりを求める数学的な方法でもあるのかググってもよくわからずを過ごした…
最終的に思い至ったのが、『誤読しているんじゃないか?』
そう、事実、”誤読”だった・・・
1e9+7"で"割った余りを求めるのだとずっと思っていた…
違った
1e9+7"を"割った余りを求める問題だった…つまり1e9+8以上になったら1e9+7が出力すべき値…

サンプルの出力例には当初から違和感を感じてたけど、その違和感について深く考えず考察つづけたのもいけなかった

*/
0