結果
| 問題 |
No.1681 +-*
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-02-15 18:28:39 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
AC
|
| 実行時間 | 106 ms / 2,000 ms |
| コード長 | 526 bytes |
| コンパイル時間 | 2,220 ms |
| コンパイル使用メモリ | 210,220 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-22 17:30:53 |
| 合計ジャッジ時間 | 5,167 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 18 |
ソースコード
import std;
int readInt() {
int x;
readf!" %d"(x);
return x;
}
const long P = (1e9 + 7).to!long;
long qpow(long a, long b, long m = P) {
long r = 1 % P, t = a % P;
for(; b; b /= 2) {
if(b & 1)
r = r * t % P;
t = t * t % P;
}
return r;
}
void main() {
int n = readInt;
auto a = new int[](n).map!(i => readInt);
long ans = 0, mul = 1;
foreach(i; 0 .. n) {
mul = mul * a[i] % P;
if(i + 1 < n) {
ans += mul * 2 * qpow(3, n - i - 2) % P;
} else {
ans += mul;
}
ans %= P;
}
writeln(ans);
}