Submission #3558527
Source Code Expand
#include <bits/stdc++.h> using namespace std; using i64 = int64_t; using vi = vector<i64>; using vvi = vector<vi>; constexpr i64 MOD = 1e18; template<int n> struct mat { vvi d; mat() { d = vvi(n, vi(n)); } mat(initializer_list<initializer_list<i64>> m) { for (auto& a: m) { vi row(a.begin(), a.end()); d.emplace_back(row); } assert(n == d.size()); assert(n == d.front().size()); }; mat operator+(const mat& rhs) { mat ret; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { ret.d[i][j] = d[i][j] + rhs.d[i][j]; ret.d[i][j] %= MOD; ret.d[i][j] += MOD; ret.d[i][j] %= MOD; } } return ret; } mat operator-(const mat& rhs) { mat ret; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { ret.d[i][j] = d[i][j] - rhs.d[i][j]; ret.d[i][j] %= MOD; ret.d[i][j] += MOD; ret.d[i][j] %= MOD; } } return ret; } mat operator*(const mat& rhs) { mat ret; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { ret.d[i][j] += d[i][k] * rhs.d[k][j]; ret.d[i][j] %= MOD; ret.d[i][j] += MOD; ret.d[i][j] %= MOD; } } } return ret; } mat operator*(const i64 k) { mat ret; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { ret.d[i][j] = d[i][j] * k; ret.d[i][j] %= MOD; ret.d[i][j] += MOD; ret.d[i][j] %= MOD; } } return ret; } static mat eye() { mat ret; for (int i = 0; i < n; i++) { ret.d[i][i] = 1; } return ret; } }; template<int k> mat<k> pow(mat<k>& a, i64 n) { if (n == 0) { return mat<k>::eye(); } if (n % 2 == 0) { mat<k> t = pow(a, n / 2); return t * t; } return a * pow(a, n - 1); } i64 fib(i64 n) { if (n <= 1) return n; mat<2> f{{1, 1}, {1, 0}}; mat<2> res = pow(f, n - 2); return (res.d[0][0] + res.d[0][1]) % MOD; } int main() { i64 n; cin >> n; vi fibs; for (int i = 0;; i++) { i64 f = fib(i); if (f > 1e10) { break; } fibs.push_back(f); } int cnt = 0; while (n) { if (upper_bound(fibs.begin(), fibs.end(), n) - lower_bound(fibs.begin(), fibs.end(), n)) { cnt++; break; } else { int k = lower_bound(fibs.begin(), fibs.end(), n) - fibs.begin(); k--; n -= fibs[k]; cnt++; } } cout << cnt << endl; }
Submission Info
Submission Time | |
---|---|
Task | A - ぶんたん |
User | xuzijian629 |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 3154 Byte |
Status | AC |
Exec Time | 1 ms |
Memory | 256 KB |
Judge Result
Set Name | small | large | ||||
---|---|---|---|---|---|---|
Score / Max Score | 50 / 50 | 50 / 50 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
small | small/00_sample1, small/00_sample2, small/10_small_randomcase64, small/10_small_randomcase65, small/10_small_randomcase66, small/10_small_randomcase67, small/10_small_randomcase68, small/10_small_randomcase69, small/10_small_randomcase70, small/10_small_randomcase71, small/10_small_randomcase72, small/10_small_randomcase73, small/10_small_randomcase74, small/10_small_randomcase75, small/10_small_randomcase76, small/10_small_randomcase77, small/10_small_randomcase78, small/10_small_randomcase79, small/10_small_randomcase80, small/10_small_randomcase81, small/10_small_randomcase82, small/10_small_randomcase83, small/10_small_testcase00, small/10_small_testcase01, small/10_small_testcase02, small/10_small_testcase03, small/10_small_testcase04, small/10_small_testcase05, small/10_small_testcase06, small/10_small_testcase07, small/10_small_testcase08, small/10_small_testcase11, small/10_small_testcase12, small/10_small_testcase13, small/10_small_testcase14, small/10_small_testcase15, small/10_small_testcase16, small/10_small_testcase17, small/10_small_testcase18, small/10_small_testcase19, small/10_small_testcase20, small/10_small_testcase23, small/10_small_testcase24, small/10_small_testcase26, small/10_small_testcase28, small/10_small_testcase29, small/10_small_testcase31, small/10_small_testcase34, small/10_small_testcase36, small/10_small_testcase38, small/10_small_testcase39, small/10_small_testcase41, small/10_small_testcase42, small/10_small_testcase43, small/10_small_testcase44, small/10_small_testcase45, small/10_small_testcase46, small/10_small_testcase47, small/10_small_testcase48, small/10_small_testcase50, small/10_small_testcase51, small/10_small_testcase52, small/10_small_testcase53, small/10_small_testcase54, small/10_small_testcase56, small/10_small_testcase58, small/10_small_testcase59, small/10_small_testcase60, small/10_small_testcase61, small/10_small_testcase62 |
large | small/00_sample1, small/00_sample2, small/10_small_randomcase64, small/10_small_randomcase65, small/10_small_randomcase66, small/10_small_randomcase67, small/10_small_randomcase68, small/10_small_randomcase69, small/10_small_randomcase70, small/10_small_randomcase71, small/10_small_randomcase72, small/10_small_randomcase73, small/10_small_randomcase74, small/10_small_randomcase75, small/10_small_randomcase76, small/10_small_randomcase77, small/10_small_randomcase78, small/10_small_randomcase79, small/10_small_randomcase80, small/10_small_randomcase81, small/10_small_randomcase82, small/10_small_randomcase83, small/10_small_testcase00, small/10_small_testcase01, small/10_small_testcase02, small/10_small_testcase03, small/10_small_testcase04, small/10_small_testcase05, small/10_small_testcase06, small/10_small_testcase07, small/10_small_testcase08, small/10_small_testcase11, small/10_small_testcase12, small/10_small_testcase13, small/10_small_testcase14, small/10_small_testcase15, small/10_small_testcase16, small/10_small_testcase17, small/10_small_testcase18, small/10_small_testcase19, small/10_small_testcase20, small/10_small_testcase23, small/10_small_testcase24, small/10_small_testcase26, small/10_small_testcase28, small/10_small_testcase29, small/10_small_testcase31, small/10_small_testcase34, small/10_small_testcase36, small/10_small_testcase38, small/10_small_testcase39, small/10_small_testcase41, small/10_small_testcase42, small/10_small_testcase43, small/10_small_testcase44, small/10_small_testcase45, small/10_small_testcase46, small/10_small_testcase47, small/10_small_testcase48, small/10_small_testcase50, small/10_small_testcase51, small/10_small_testcase52, small/10_small_testcase53, small/10_small_testcase54, small/10_small_testcase56, small/10_small_testcase58, small/10_small_testcase59, small/10_small_testcase60, small/10_small_testcase61, small/10_small_testcase62, large/20_large_randomcase128, large/20_large_randomcase129, large/20_large_randomcase130, large/20_large_randomcase131, large/20_large_randomcase132, large/20_large_randomcase133, large/20_large_randomcase134, large/20_large_randomcase135, large/20_large_randomcase136, large/20_large_randomcase137, large/20_large_randomcase138, large/20_large_randomcase139, large/20_large_randomcase140, large/20_large_randomcase141, large/20_large_randomcase142, large/20_large_randomcase143, large/20_large_randomcase144, large/20_large_randomcase145, large/20_large_randomcase146, large/20_large_randomcase147, large/20_large_testcase100, large/20_large_testcase101, large/20_large_testcase102, large/20_large_testcase103, large/20_large_testcase104, large/20_large_testcase105, large/20_large_testcase106, large/20_large_testcase107, large/20_large_testcase108, large/20_large_testcase109, large/20_large_testcase110, large/20_large_testcase111, large/20_large_testcase112, large/20_large_testcase113, large/20_large_testcase114, large/20_large_testcase115, large/20_large_testcase117, large/20_large_testcase118, large/20_large_testcase119, large/20_large_testcase120, large/20_large_testcase121, large/20_large_testcase122, large/20_large_testcase123, large/20_large_testcase124, large/20_large_testcase125, large/20_large_testcase126, large/20_large_testcase127, large/20_large_testcase84, large/20_large_testcase85, large/20_large_testcase86, large/20_large_testcase88, large/20_large_testcase89, large/20_large_testcase90, large/20_large_testcase91, large/20_large_testcase93, large/20_large_testcase95, large/20_large_testcase97, large/20_large_testcase98, large/20_sample3 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
large/20_large_randomcase128 | AC | 1 ms | 256 KB |
large/20_large_randomcase129 | AC | 1 ms | 256 KB |
large/20_large_randomcase130 | AC | 1 ms | 256 KB |
large/20_large_randomcase131 | AC | 1 ms | 256 KB |
large/20_large_randomcase132 | AC | 1 ms | 256 KB |
large/20_large_randomcase133 | AC | 1 ms | 256 KB |
large/20_large_randomcase134 | AC | 1 ms | 256 KB |
large/20_large_randomcase135 | AC | 1 ms | 256 KB |
large/20_large_randomcase136 | AC | 1 ms | 256 KB |
large/20_large_randomcase137 | AC | 1 ms | 256 KB |
large/20_large_randomcase138 | AC | 1 ms | 256 KB |
large/20_large_randomcase139 | AC | 1 ms | 256 KB |
large/20_large_randomcase140 | AC | 1 ms | 256 KB |
large/20_large_randomcase141 | AC | 1 ms | 256 KB |
large/20_large_randomcase142 | AC | 1 ms | 256 KB |
large/20_large_randomcase143 | AC | 1 ms | 256 KB |
large/20_large_randomcase144 | AC | 1 ms | 256 KB |
large/20_large_randomcase145 | AC | 1 ms | 256 KB |
large/20_large_randomcase146 | AC | 1 ms | 256 KB |
large/20_large_randomcase147 | AC | 1 ms | 256 KB |
large/20_large_testcase100 | AC | 1 ms | 256 KB |
large/20_large_testcase101 | AC | 1 ms | 256 KB |
large/20_large_testcase102 | AC | 1 ms | 256 KB |
large/20_large_testcase103 | AC | 1 ms | 256 KB |
large/20_large_testcase104 | AC | 1 ms | 256 KB |
large/20_large_testcase105 | AC | 1 ms | 256 KB |
large/20_large_testcase106 | AC | 1 ms | 256 KB |
large/20_large_testcase107 | AC | 1 ms | 256 KB |
large/20_large_testcase108 | AC | 1 ms | 256 KB |
large/20_large_testcase109 | AC | 1 ms | 256 KB |
large/20_large_testcase110 | AC | 1 ms | 256 KB |
large/20_large_testcase111 | AC | 1 ms | 256 KB |
large/20_large_testcase112 | AC | 1 ms | 256 KB |
large/20_large_testcase113 | AC | 1 ms | 256 KB |
large/20_large_testcase114 | AC | 1 ms | 256 KB |
large/20_large_testcase115 | AC | 1 ms | 256 KB |
large/20_large_testcase117 | AC | 1 ms | 256 KB |
large/20_large_testcase118 | AC | 1 ms | 256 KB |
large/20_large_testcase119 | AC | 1 ms | 256 KB |
large/20_large_testcase120 | AC | 1 ms | 256 KB |
large/20_large_testcase121 | AC | 1 ms | 256 KB |
large/20_large_testcase122 | AC | 1 ms | 256 KB |
large/20_large_testcase123 | AC | 1 ms | 256 KB |
large/20_large_testcase124 | AC | 1 ms | 256 KB |
large/20_large_testcase125 | AC | 1 ms | 256 KB |
large/20_large_testcase126 | AC | 1 ms | 256 KB |
large/20_large_testcase127 | AC | 1 ms | 256 KB |
large/20_large_testcase84 | AC | 1 ms | 256 KB |
large/20_large_testcase85 | AC | 1 ms | 256 KB |
large/20_large_testcase86 | AC | 1 ms | 256 KB |
large/20_large_testcase88 | AC | 1 ms | 256 KB |
large/20_large_testcase89 | AC | 1 ms | 256 KB |
large/20_large_testcase90 | AC | 1 ms | 256 KB |
large/20_large_testcase91 | AC | 1 ms | 256 KB |
large/20_large_testcase93 | AC | 1 ms | 256 KB |
large/20_large_testcase95 | AC | 1 ms | 256 KB |
large/20_large_testcase97 | AC | 1 ms | 256 KB |
large/20_large_testcase98 | AC | 1 ms | 256 KB |
large/20_sample3 | AC | 1 ms | 256 KB |
small/00_sample1 | AC | 1 ms | 256 KB |
small/00_sample2 | AC | 1 ms | 256 KB |
small/10_small_randomcase64 | AC | 1 ms | 256 KB |
small/10_small_randomcase65 | AC | 1 ms | 256 KB |
small/10_small_randomcase66 | AC | 1 ms | 256 KB |
small/10_small_randomcase67 | AC | 1 ms | 256 KB |
small/10_small_randomcase68 | AC | 1 ms | 256 KB |
small/10_small_randomcase69 | AC | 1 ms | 256 KB |
small/10_small_randomcase70 | AC | 1 ms | 256 KB |
small/10_small_randomcase71 | AC | 1 ms | 256 KB |
small/10_small_randomcase72 | AC | 1 ms | 256 KB |
small/10_small_randomcase73 | AC | 1 ms | 256 KB |
small/10_small_randomcase74 | AC | 1 ms | 256 KB |
small/10_small_randomcase75 | AC | 1 ms | 256 KB |
small/10_small_randomcase76 | AC | 1 ms | 256 KB |
small/10_small_randomcase77 | AC | 1 ms | 256 KB |
small/10_small_randomcase78 | AC | 1 ms | 256 KB |
small/10_small_randomcase79 | AC | 1 ms | 256 KB |
small/10_small_randomcase80 | AC | 1 ms | 256 KB |
small/10_small_randomcase81 | AC | 1 ms | 256 KB |
small/10_small_randomcase82 | AC | 1 ms | 256 KB |
small/10_small_randomcase83 | AC | 1 ms | 256 KB |
small/10_small_testcase00 | AC | 1 ms | 256 KB |
small/10_small_testcase01 | AC | 1 ms | 256 KB |
small/10_small_testcase02 | AC | 1 ms | 256 KB |
small/10_small_testcase03 | AC | 1 ms | 256 KB |
small/10_small_testcase04 | AC | 1 ms | 256 KB |
small/10_small_testcase05 | AC | 1 ms | 256 KB |
small/10_small_testcase06 | AC | 1 ms | 256 KB |
small/10_small_testcase07 | AC | 1 ms | 256 KB |
small/10_small_testcase08 | AC | 1 ms | 256 KB |
small/10_small_testcase11 | AC | 1 ms | 256 KB |
small/10_small_testcase12 | AC | 1 ms | 256 KB |
small/10_small_testcase13 | AC | 1 ms | 256 KB |
small/10_small_testcase14 | AC | 1 ms | 256 KB |
small/10_small_testcase15 | AC | 1 ms | 256 KB |
small/10_small_testcase16 | AC | 1 ms | 256 KB |
small/10_small_testcase17 | AC | 1 ms | 256 KB |
small/10_small_testcase18 | AC | 1 ms | 256 KB |
small/10_small_testcase19 | AC | 1 ms | 256 KB |
small/10_small_testcase20 | AC | 1 ms | 256 KB |
small/10_small_testcase23 | AC | 1 ms | 256 KB |
small/10_small_testcase24 | AC | 1 ms | 256 KB |
small/10_small_testcase26 | AC | 1 ms | 256 KB |
small/10_small_testcase28 | AC | 1 ms | 256 KB |
small/10_small_testcase29 | AC | 1 ms | 256 KB |
small/10_small_testcase31 | AC | 1 ms | 256 KB |
small/10_small_testcase34 | AC | 1 ms | 256 KB |
small/10_small_testcase36 | AC | 1 ms | 256 KB |
small/10_small_testcase38 | AC | 1 ms | 256 KB |
small/10_small_testcase39 | AC | 1 ms | 256 KB |
small/10_small_testcase41 | AC | 1 ms | 256 KB |
small/10_small_testcase42 | AC | 1 ms | 256 KB |
small/10_small_testcase43 | AC | 1 ms | 256 KB |
small/10_small_testcase44 | AC | 1 ms | 256 KB |
small/10_small_testcase45 | AC | 1 ms | 256 KB |
small/10_small_testcase46 | AC | 1 ms | 256 KB |
small/10_small_testcase47 | AC | 1 ms | 256 KB |
small/10_small_testcase48 | AC | 1 ms | 256 KB |
small/10_small_testcase50 | AC | 1 ms | 256 KB |
small/10_small_testcase51 | AC | 1 ms | 256 KB |
small/10_small_testcase52 | AC | 1 ms | 256 KB |
small/10_small_testcase53 | AC | 1 ms | 256 KB |
small/10_small_testcase54 | AC | 1 ms | 256 KB |
small/10_small_testcase56 | AC | 1 ms | 256 KB |
small/10_small_testcase58 | AC | 1 ms | 256 KB |
small/10_small_testcase59 | AC | 1 ms | 256 KB |
small/10_small_testcase60 | AC | 1 ms | 256 KB |
small/10_small_testcase61 | AC | 1 ms | 256 KB |
small/10_small_testcase62 | AC | 1 ms | 256 KB |