結果

問題 No.978 Fibonacci Convolution Easy
ユーザー ojisan_ITojisan_IT
提出日時 2020-03-09 20:16:27
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 60 ms / 2,000 ms
コード長 1,136 bytes
コンパイル時間 1,565 ms
コンパイル使用メモリ 166,484 KB
実行使用メモリ 34,632 KB
最終ジャッジ日時 2024-11-14 04:18:18
合計ジャッジ時間 2,767 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 3 ms
6,816 KB
testcase_01 AC 25 ms
17,736 KB
testcase_02 AC 14 ms
10,568 KB
testcase_03 AC 58 ms
33,740 KB
testcase_04 AC 17 ms
11,340 KB
testcase_05 AC 5 ms
6,824 KB
testcase_06 AC 22 ms
15,048 KB
testcase_07 AC 37 ms
23,496 KB
testcase_08 AC 28 ms
18,376 KB
testcase_09 AC 44 ms
29,000 KB
testcase_10 AC 59 ms
34,632 KB
testcase_11 AC 19 ms
14,024 KB
testcase_12 AC 5 ms
6,816 KB
testcase_13 AC 21 ms
16,708 KB
testcase_14 AC 7 ms
8,904 KB
testcase_15 AC 24 ms
17,608 KB
testcase_16 AC 60 ms
34,632 KB
testcase_17 AC 60 ms
34,504 KB
testcase_18 AC 2 ms
6,820 KB
testcase_19 AC 2 ms
6,816 KB
testcase_20 AC 3 ms
6,816 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