結果
| 問題 |
No.797 Noelちゃんとピラミッド
|
| コンテスト | |
| ユーザー |
ama_nuko
|
| 提出日時 | 2019-03-16 00:02:53 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 18 ms / 2,000 ms |
| コード長 | 2,151 bytes |
| コンパイル時間 | 928 ms |
| コンパイル使用メモリ | 100,932 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-01 22:09:01 |
| 合計ジャッジ時間 | 3,309 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 60 |
ソースコード
#include <cmath>
#include <iostream>
#include <vector>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <stack>
#include <tuple>
#include <bitset>
#include <algorithm>
#include <functional>
#include <utility>
#include <iomanip>
#define int long long int
#define rep(i, n) for(int i = 0; i < (n); ++i)
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define UNIQUE(v) v.erase( unique(v.begin(), v.end()), v.end() )
using namespace std;
typedef pair<int, int> P;
const int INF = 1e15;
const int MOD = 1e9+7;
template <typename T>
using vector2 = vector<vector<T>>;
template <typename T>
vector2<T> initVec2(size_t n0, size_t n1, T e = T()){
return vector2<T>(n0, vector<T>(n1, e));
}
template <typename T>
using vector3 = vector<vector<vector<T>>>;
template <typename T>
vector3<T> initVec3(size_t n0, size_t n1, size_t n2, T e = T()){
return vector3<T>(n0, vector2<T>(n1, vector<T>(n2, e)));
}
int powM(int x, int n){
if(n == 0){
return 1;
}
if(n % 2 == 0){
return powM(x * x % MOD, n / 2);
}
return powM(x, n-1) * x % MOD;
}
int factM(int n){
static vector<int> t = {1};
if((int)t.size() > n){
return t[n];
}
for(int i = t.size(); i <= n; i++){
t.push_back(t[i-1] * i % MOD);
}
return t[n];
}
class Combination{
private:
vector<int> t;
public:
Combination(int n): t(n+1){
t[n] = powM(factM(n), MOD-2);
for(int i = n-1; i >= 0; i--){
t[i] = t[i+1] * (i+1) % MOD;
}
}
int comb(int n, int k){
if(n < k || n < 0 || k < 0){
return 0;
}
return factM(n) * t[k] % MOD * t[n-k] % MOD;
}
int getInv(int n){
return t[n];
}
};
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
vector<int> a(n);
rep(i, n) cin >> a[i];
Combination c(n-1);
int ans = 0;
rep(i, n){
ans += c.comb(n - 1, i) * a[i] % MOD;
ans %= MOD;
}
cout << ans << endl;
return 0;
}
ama_nuko