結果

問題 No.978 Fibonacci Convolution Easy
ユーザー msm1993msm1993
提出日時 2020-04-02 17:21:26
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 60 ms / 2,000 ms
コード長 1,136 bytes
コンパイル時間 1,486 ms
コンパイル使用メモリ 163,860 KB
実行使用メモリ 34,600 KB
最終ジャッジ日時 2023-09-11 00:33:25
合計ジャッジ時間 3,725 ms
ジャッジサーバーID
(参考情報)
judge14 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 3 ms
5,632 KB
testcase_01 AC 25 ms
17,624 KB
testcase_02 AC 15 ms
12,556 KB
testcase_03 AC 58 ms
34,252 KB
testcase_04 AC 16 ms
13,492 KB
testcase_05 AC 5 ms
8,284 KB
testcase_06 AC 22 ms
16,780 KB
testcase_07 AC 39 ms
25,388 KB
testcase_08 AC 28 ms
18,228 KB
testcase_09 AC 44 ms
28,824 KB
testcase_10 AC 60 ms
34,568 KB
testcase_11 AC 19 ms
13,908 KB
testcase_12 AC 5 ms
6,152 KB
testcase_13 AC 22 ms
17,032 KB
testcase_14 AC 8 ms
8,936 KB
testcase_15 AC 25 ms
17,448 KB
testcase_16 AC 60 ms
34,600 KB
testcase_17 AC 60 ms
34,556 KB
testcase_18 AC 2 ms
5,452 KB
testcase_19 AC 2 ms
5,400 KB
testcase_20 AC 2 ms
5,396 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define pb push_back
#define mt make_tuple
#define ALL(a) (a).begin(),(a).end()
#define FST first
#define SEC second
#define DEB cerr<<"!"<<endl
#define SHOW(a,b) cerr<<(a)<<" "<<(b)<<endl
#define vi vector<int>

using ll = long long;
const int INF = (INT_MAX/2);
const ll LLINF = (LLONG_MAX/2);
const double eps = 1e-8;
const ll DIV =1e9+7;
//const double PI = M_PI;
inline ll pow(ll x,ll n,ll m){ll r=1;while(n>0){if((n&1)==1)r=r*x%m;x=x*x%m;n>>=1;}return r%m;}
inline ll lcm(ll d1, ll d2){return d1 / __gcd(d1, d2) * d2;}
#define chmax(a,b) a=max(a,b)

/*Coding Space*/
ll num[2000001];
ll snum[2000001];
int main(){
  num[0] = 0; num[1] = 1;
  ll n,p; cin >> n >> p;
  for(int i = 2; i < n; ++i){
    num[i] = p * num[i-1]; num[i] %= DIV;
    num[i] += num[i-2]; num[i] %= DIV;
  }
  snum[0] = 0;
  for(int i = 1; i < n; ++i){
    snum[i] += num[i] + snum[i-1];
    snum[i] %= DIV;
  }

  ll ans = 0;
  rep(i,n){
    ans += num[i] * snum[i];
    ans %= DIV;
  }
  //rep(i,5) cout << num[i] << ' ' << snum[i] << endl;
  cout << ans << endl;
}
0