結果
| 問題 |
No.1578 A × B × C
|
| コンテスト | |
| ユーザー |
urutom
|
| 提出日時 | 2022-11-04 02:47:53 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 923 bytes |
| コンパイル時間 | 13,016 ms |
| コンパイル使用メモリ | 225,444 KB |
| 実行使用メモリ | 6,812 KB |
| 最終ジャッジ日時 | 2024-07-18 07:20:19 |
| 合計ジャッジ時間 | 12,818 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 22 |
ソースコード
package main
import (
"bufio"
"fmt"
"math"
"os"
"strconv"
)
const MaxInt = math.MaxInt64
var scanner *bufio.Scanner
const M = 1_000_000_000 + 7
// a^p%m
func powmod(a, p, m int) int {
ret := 1
for p > 0 {
if p%2 == 1 {
ret = (ret * a) % m
}
a = (a * a) % m
p /= 2
}
return ret
}
func main() {
a, b, c := Int(), Int(), Int()
k := Int()
x := (((a * b) % M) * c) % M
r := powmod(2, k, M-1)
ans := powmod(x, r, M)
fmt.Println(ans)
}
func init() {
scanner = bufio.NewScanner(os.Stdin)
scanner.Buffer([]byte{}, MaxInt)
scanner.Split(bufio.ScanWords)
}
func Int() int {
scanner.Scan()
ret, _ := strconv.ParseInt(scanner.Text(), 10, 0)
return int(ret)
}
func Ints(n int) []int {
ret := make([]int, n)
for i := 0; i < n; i++ {
ret[i] = Int()
}
return ret
}
func Max(a, b int) int {
if a < b {
return b
}
return a
}
func Min(a, b int) int {
if a < b {
return a
}
return b
}
urutom