191992025-11-28 18:44:45nlaciFibonacci Sequencescpp17Accepted 100/100884ms18228 KiB
#include <iostream>
#include <vector>
#include <map>
using namespace std;

vector<int> fib {2,3};

map<int,int> memo { {1, 1} };
int f(int x) {
    if(memo.find(x) != memo.end()) return memo[x];

    for(int i : fib) {
        if(x % i == 0) {
            memo[x] += f(x/i);
        }
    }

    return memo[x];
}

int main() {
    ios::sync_with_stdio(false); cin.tie(0);

    while(fib.back() <= 1e9) {
        fib.push_back(fib.back() + fib[fib.size()-2]);
    }

    int T; cin >> T;
    while(T--) {
        int M; cin >> M;
        cout << f(M) << endl;
    }

    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms508 KiB
2Accepted2ms336 KiB
subtask225/25
3Accepted1ms316 KiB
4Accepted1ms316 KiB
5Accepted1ms316 KiB
6Accepted1ms316 KiB
subtask325/25
7Accepted2ms396 KiB
8Accepted2ms316 KiB
9Accepted2ms316 KiB
10Accepted2ms316 KiB
subtask425/25
11Accepted367ms8072 KiB
12Accepted375ms8312 KiB
subtask525/25
13Accepted883ms17980 KiB
14Accepted884ms18228 KiB