結果
問題 |
No.320 眠れない夜に
|
ユーザー |
|
提出日時 | 2016-06-29 10:17:23 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,358 bytes |
コンパイル時間 | 1,803 ms |
コンパイル使用メモリ | 168,276 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-11 22:54:56 |
合計ジャッジ時間 | 2,711 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 25 WA * 6 |
ソースコード
#include "bits/stdc++.h" using namespace std; #define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i)) #define rep(i,j) FOR(i,0,j) #define each(x,y) for(auto &(x):(y)) #define mp make_pair #define all(x) (x).begin(),(x).end() #define debug(x) cout<<#x<<": "<<(x)<<endl #define smax(x,y) (x)=max((x),(y)) #define smin(x,y) (x)=min((x),(y)) #define MEM(x,y) memset((x),(y),sizeof (x)) #define sz(x) (int)(x).size() typedef long long ll; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<ll> vll; ll f(int n){ vll a(n + 1); a[1] = a[2] = 1; for(int i = 3; i <= n; ++i)a[i] = a[i - 1] + a[i - 2]; return a[n]; } int main(){ int N; ll M; while(cin >> N >> M){ ll fib = f(N); ll fusoku = fib - M; if(fusoku < 0){ puts("-1"); } else if(fusoku == 0){ puts("0"); } else{ int cnt = 0; for(int i = 3; i <= N && fusoku > 0; ++i){ vll a(N + 1); a[i - 1] = 1; for(int j = i; j <= N; ++j)a[j] = a[j - 1] + a[j - 2]; if(fusoku >= a[N]){ cnt++; fusoku -= a[N]; } } if(fusoku == 0){ cout << cnt << endl; } else{ puts("-1"); } } } }