結果
問題 | No.1081 和の和 |
ユーザー |
|
提出日時 | 2020-06-19 21:23:27 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 2,489 bytes |
コンパイル時間 | 1,519 ms |
コンパイル使用メモリ | 171,476 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-03 13:38:12 |
合計ジャッジ時間 | 2,024 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 8 |
ソースコード
#include <bits/stdc++.h>template <long long mod>class Combination{std::vector<long long> fact, finv, inv;public:Combination() {}Combination(int sz){fact.resize(sz);finv.resize(sz);inv.resize(sz);fact[0] = 1;for (int i = 1; i < sz; ++i){fact[i] = fact[i - 1] * i % mod;}inv[0] = 0;inv[1] = 1;for (int i = 2; i < sz; ++i){inv[i] = mod - inv[mod % i] * (mod / i) % mod;}finv[0] = 1;for (int i = 1; i < sz; ++i){finv[i] = finv[i - 1] * inv[i] % mod;}}long long C(long long n, long long k){if (n < k)return 0;if (n < 0 || k < 0)return 0;return (fact[n] * finv[k] % mod) * finv[n - k] % mod;}long long P(long long n, long long k){if (n < k)return 0;if (n < 0 || k < 0)return 0;return fact[n] * finv[n - k] % mod;}long long H(long long n, long long k){return this->C(n + k - 1, k);}long long getfact(int i){return fact[i];}long long getinv(int i){return inv[i];}long long getfinv(int i){return finv[i];}};using namespace std;using ll = long long;using vi = vector<int>;using vvi = vector<vi>;using vll = vector<ll>;using vvll = vector<vll>;using P = pair<int, int>;const double eps = 1e-8;const ll MOD = 1000000007;const int INF = INT_MAX / 2;const ll LINF = LLONG_MAX / 2;template <typename T1, typename T2>bool chmax(T1 &a, const T2 &b) {if(a < b) {a = b; return true;}return false;}template <typename T1, typename T2>bool chmin(T1 &a, const T2 &b) {if(a > b) {a = b; return true;}return false;}template<typename T1, typename T2>ostream& operator<<(ostream &os, const pair<T1, T2> p) {os << p.first << ":" << p.second;return os;}template<class T>ostream &operator<<(ostream &os, const vector<T> &v) {for(int i=0;i<((int)(v.size()));++i) {if(i) os << " ";os << v[i];}return os;}int main() {cin.tie(0);ios::sync_with_stdio(false);cout << fixed << setprecision(10);int n; cin >> n;vll a(n);for(int i=0;i<(n);++i) cin >> a[i];Combination<MOD> comb(1000);ll su = 0;for(int i=0;i<(n);++i) {su += a[i] * comb.C(n-1, i);su %= MOD;}cout << su << endl;}