Advertisement
XiaYuanOwO

Untitled

Feb 21st, 2025
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. const int MAX_FIB = 110;
  5. int fibonacci[MAX_FIB], value, test_cases;
  6.  
  7. inline int count_operations(int amount) {
  8.     int operation_count = 0, index = 0;
  9.     while (amount) {
  10.         index = lower_bound(fibonacci + 1, fibonacci + 1 + 98, amount) - fibonacci;
  11.         amount = min(amount - fibonacci[index - 1], fibonacci[index] - amount);
  12.         operation_count++;
  13.     }
  14.     return operation_count;
  15. }
  16.  
  17. inline void initialize() {
  18.     scanf("%lld", &test_cases);
  19.     fibonacci[1] = 1;
  20.     for (int i = 2; i <= 98; i++) {
  21.         fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
  22.     }
  23.     while (test_cases--) {
  24.         scanf("%lld", &value);
  25.         printf("%lld\n", count_operations(value));
  26.     }
  27. }
  28.  
  29. signed main() {
  30.     initialize();
  31.     return 0;
  32. }
  33.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement