結果
| 問題 | No.1336 Union on Blackboard |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-01-15 23:23:11 |
| 言語 | C++17(clang) (17.0.6 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 4 ms / 2,000 ms |
| コード長 | 1,293 bytes |
| 記録 | |
| コンパイル時間 | 1,115 ms |
| コンパイル使用メモリ | 140,652 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-26 18:26:35 |
| 合計ジャッジ時間 | 2,182 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 31 |
ソースコード
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
using ll = long long;
const ll MOD = 1000000007;
long long modinv(long long a, long long m) {
long long b = m, u = 1, v = 0;
while(b) {
long long t = a / b;
a -= t * b;
swap(a, b);
u -= t * v;
swap(u, v);
}
u %= m;
if(u < 0)
u += m;
return u;
}
int main() {
int t;
cin >> t;
while(t--) {
int n;
cin >> n;
vector<ll> a(n);
ll sum = 0;
for(int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
}
for(int i = n - 1; i > 0; i--) {
ll tmp = a[i] + a[i - 1] + (a[i] * a[i - 1]);
a.pop_back();
a.pop_back();
tmp %= MOD;
a.push_back(tmp);
}
cout << a[0] << '\n';
// if(a[0] == 0) {
// cout << 0 << '\n';
// continue;
// }
// ll q = 1;
// for(int i = 0; i < n; i++) {
// q *= (i + 1);
// q %= MOD;
// }
// q /= 2;
// cout << a[0] << " " << q << '\n';
// a[0] %= MOD;
// ll g = gcd(q, a[0]);
// q /= g, a[0] /= g;
// cout << a[0] * modinv(q, MOD) % MOD << '\n';
}
return 0;
}