結果

問題 No.797 Noelちゃんとピラミッド
ユーザー Krishna Sameer
提出日時 2022-10-03 17:30:33
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 40 ms / 2,000 ms
コード長 1,281 bytes
コンパイル時間 1,773 ms
コンパイル使用メモリ 168,864 KB
実行使用メモリ 16,768 KB
最終ジャッジ日時 2024-12-27 19:09:40
合計ジャッジ時間 5,675 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 60
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;

#define int long long
#define pb emplace_back
#define sz(v) (int)(v.size())
#define all(v) (v.begin(),v.end())
const int32_t MAX = 510000;
const int32_t M=1e9+7;

int fac[MAX], finv[MAX], inv[MAX];


void cominit() {
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (int i = 2; i < MAX; i++){
        fac[i] = fac[i - 1] * i % M;
        inv[i] = M - inv[M%i] * (M / i) % M;
        finv[i] = finv[i - 1] * inv[i] % M;
    }
}


int COM(int n, int k){
    if (n < k) return 0;
    if (n < 0 || k < 0) return 0;
    return fac[n] * (finv[k] * finv[n - k] % M) % M;
}

int FINV(int n){
    if (n < 0) return 0;
    return finv[n];
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	// freopen("input.txt","r",stdin);
	// freopen("output.txt","w",stdout);
	cominit();
	int n;
	cin >> n;
	vector<int> v(n);
	for(int i = 0;i<n;i++)
		cin >> v[i];

	int dp[n];
	dp[0] = 1;
	for(int i = 1;i<=n;i++){
		dp[i] = (dp[i-1] * (n - i))/i % M;
	}
	// dp stores the value of ncr from r = 0 to r = n

	int ans = 0;
	for(int i = 0;i<n;i++)
	{
 		ans += v[i] * COM(n-1,i) % M;
        ans %= M;	
    }

	cout << ans << " ";
	return 0;
}
0