結果
問題 | No.1681 +-* |
ユーザー |
|
提出日時 | 2021-09-17 21:53:46 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 79 ms / 2,000 ms |
コード長 | 725 bytes |
コンパイル時間 | 418 ms |
コンパイル使用メモリ | 65,140 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-29 20:20:18 |
合計ジャッジ時間 | 2,208 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include <iostream> using namespace std; int mod = 1e9+7; int add(int a,int b) { return (a+b)%mod; } int mul(int a,int b) { long long g = (1LL*a*b)%mod; return (int) g; } int power(int b,int p) { if(p < 0) return 0; if(p == 0) return 1; int g = power(b,p/2); g = mul(g,g); if(p%2) g = mul(g,b); return g; } int inv(int b) { return power(b,mod-2); } int main() { int N; cin>>N; int k = inv(3); int ans = 0; int c = 1; int m = power(3,N-2); m = mul(m,2); int a[N]; for(int i=0;i<N;i++) cin>>a[i]; for(int i=0;i<N-2;i++) { c = mul(c,a[i]); ans = add(ans,mul(c,m)); m = mul(m,k); } c = mul(c,a[N-2]); ans = add(ans,mul(c,2)); c = mul(c,a[N-1]); ans = add(ans,c); cout<<ans; return 0; }