結果

問題 No.797 Noelちゃんとピラミッド
ユーザー severrabaen
提出日時 2019-03-16 13:33:13
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
AC  
実行時間 48 ms / 2,000 ms
コード長 976 bytes
コンパイル時間 1,505 ms
コンパイル使用メモリ 158,048 KB
実行使用メモリ 6,656 KB
最終ジャッジ日時 2024-07-01 22:28:21
合計ジャッジ時間 4,940 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 60
権限があれば一括ダウンロードができます

ソースコード

diff #

#include "bits/stdc++.h"
using namespace std;
#define Would
#define you
const long long INF = 1e18;
const long long MOD = 1e9 + 7;
const double pi = acos(-1);
const int SIZE = 1 << 17;
int dx[] = { 1,0,-1,0 }, dy[] = { 0,1,0,-1 };
long long fac[100005], finv[100005], inv[100005];

void COMinit() {
	fac[0] = 1, fac[1] = 1, finv[0] = 1, finv[1] = 1, inv[1] = 1;
	for (int i = 2; i < 100005; ++i) {
		fac[i] = fac[i - 1] * i % MOD;
		inv[i] = MOD - inv[MOD%i] * (MOD / i) % MOD;
		finv[i] = finv[i - 1] * inv[i] % MOD;
	}
}

//calc
long long COM(long long n, long long k) {
	if (n < k) return 0;
	if (n < 0 || k < 0) return 0;
	return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD;
}

int main() {
	COMinit();
	long long n, k[100005];
	cin >> n;
	for (int i = 0; i < n; ++i) {
		cin >> k[i];
	}

	if (n == 1) {
		cout << k[0] << endl;
		return 0;
	}
	long long ans = 0;
	for (int i = 0; i < n; ++i) {
		ans += k[i] * COM(n - 1, i);
		ans %= MOD;
	}
	cout << ans % MOD << endl;
}
0