結果
問題 |
No.797 Noelちゃんとピラミッド
|
ユーザー |
![]() |
提出日時 | 2020-02-10 01:16:56 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 68 ms / 2,000 ms |
コード長 | 1,297 bytes |
コンパイル時間 | 1,211 ms |
コンパイル使用メモリ | 111,872 KB |
最終ジャッジ日時 | 2025-01-08 23:22:28 |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 60 |
ソースコード
#include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <deque> #include <queue> #include <array> #include <set> #include <map> #include <cmath> #include <complex> #include <algorithm> #include <numeric> #include <utility> #include <tuple> #include <bitset> #include <cstdint> #include <cassert> #include <random> #include <iterator> using namespace std; using i64 = int64_t; using i32 = int32_t; const i64 mod = 1e9 + 7; i64 ipow(i64 a, i64 b) { i64 x = a, y = 1; for (; b > 0; b >>= 1) { if (b & 1) (y *= x) %= mod; (x *= x) %= mod; } return y; } i64 inv(i64 x) { return ipow(x, mod - 2); } i64 fact(i64 x) { static vector<i64> f; i64 i = f.size(); if (x >= i) { f.resize(x + 1); for (; i <= x; ++i) { f[i] = i == 0 ? 1 : i * f[i - 1] % mod; } } return f[x]; } i64 perm(i64 n, i64 k) { return k <= n ? fact(n) * inv(fact(n - k)) % mod : 0; } i64 comb(i64 n, i64 k) { return k <= n ? fact(n) * inv(fact(k) * fact(n - k) % mod) % mod : 0; } int main() { i64 n; cin >> n; i64 ans = 0; for (int i = 0; i < n; ++i) { i64 x; cin >> x; ans += comb(n - 1, i) * x % mod; } ans %= mod; cout << ans << endl; return 0; }