結果
問題 | No.314 ケンケンパ |
ユーザー |
![]() |
提出日時 | 2019-10-18 16:14:31 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 21 ms / 1,000 ms |
コード長 | 2,806 bytes |
コンパイル時間 | 937 ms |
コンパイル使用メモリ | 98,244 KB |
最終ジャッジ日時 | 2025-01-07 22:25:41 |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
#include<iostream>#include<vector>#include<algorithm>#include<cctype>#include<utility>#include<string>#include<cmath>#include<cstring>#include<queue>#include<map>#include<set>#include<climits>#include<bitset>#include<stack>#define REP(i, n) for(int i = 0;i < n;i++)#define REPR(i, n) for(int i = n;i >= 0;i--)#define FOR(i, m, n) for(int i = m;i < n;i++)#define FORR(i, m, n) for(int i = m;i >= n;i--)#define SORT(v, n) sort(v, v+n);#define VSORT(v) sort(v.begin(), v.end());#define llong long long#define pb(a) push_back(a)#define repi(itr, ds) for (auto itr = ds.begin(); itr != ds.end(); itr++)using namespace std;typedef long long int ll;typedef pair<int, int> pii;typedef pair<ll, ll> pll;typedef tuple<ll, ll, ll, ll> lltpl;int dy[8] = { 2,2,-2,-2,1,1,-1,-1 };int dx[8] = { 1,-1,1,-1,2,-2,2,-2 };/******************************************************************************************/const int IINF = 1e9 + 7;const ll LINF = 1e18 + 7;const ll MOD = 1e9 + 7;template<typename T>vector<T> make_v(size_t a) { return vector<T>(a); }template<typename T, typename... Ts>auto make_v(size_t a, Ts... ts) {return vector<decltype(make_v<T>(ts...))>(a, make_v<T>(ts...));}template<typename T, typename V>typename enable_if<is_class<T>::value == 0>::typefill_v(T& t, const V& v) { t = v; }template<typename T, typename V>typename enable_if<is_class<T>::value != 0>::typefill_v(T& t, const V& v) {for (auto& e : t) fill_v(e, v);}// vectortemplate <typename T>istream& operator>>(istream & is, vector<T> & vec) { for (T& x : vec) is >> x; return is; }// pairtemplate <typename T, typename U>ostream& operator<<(ostream & os, pair<T, U> & pair_var) { os << "(" << pair_var.first << ", " << pair_var.second <<")"; return os; }// vectortemplate <typename T>ostream& operator<<(ostream & os, const vector<T> & vec) { os << "{"; for (int i = 0; i < vec.size(); i++) { os << vec[i] << (i+ 1 == vec.size() ? "" : ", "); }os << "}"; return os; }// maptemplate <typename T, typename U>ostream& operator<<(ostream & os, map<T, U> & map_var) { os << "{"; repi(itr, map_var) { os << *itr; itr++; if(itr != map_var.end()) os << ", "; itr--; }os << "}"; return os; }// settemplate <typename T>ostream& operator<<(ostream & os, set<T> & set_var) { os << "{"; repi(itr, set_var) { os << *itr; itr++; if (itr != set_var.end()) os << ", "; itr--; }os << "}"; return os; }ll dp[1000005][3];int main() {cin.tie(nullptr);ios::sync_with_stdio(false);int N;cin >> N;dp[1][1] = 1;for (int i = 1; i < N; i++){dp[i + 1][0] += dp[i][1] + dp[i][2];dp[i + 1][1] = dp[i][0];dp[i + 1][2] = dp[i][1];dp[i + 1][0] %= MOD;dp[i + 1][1] %= MOD;dp[i + 1][2] %= MOD;}cout << (dp[N][0] + dp[N][1] + dp[N][2])%MOD << endl;}