UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#214858#2733. 8.4t3ThySecret40226ms5492kbC++111.5kb2024-11-22 19:58:092024-11-22 23:13:21

answer

#include <bits/stdc++.h>

using namespace std;

#define int long long
// #define x first
// #define y second
#define File(a) freopen(a".in", "r", stdin), freopen(a".out", "w", stdout)

inline void debug() { cerr << '\n'; }
template<typename Type, typename... Other>
inline void debug(const Type& x, const Other&... y) { cerr << x << ' '; debug(y...); }
#define DEBUG(a...) cerr << "[" << #a << "] = ", debug(a);

typedef long long LL;
typedef pair<int, int> PII;

const int N = 200010;
const int INF = 0x3f3f3f3f;

template<typename Type>
inline void read(Type &res)
{
    res = 0;
    int ch = getchar(), flag = 0;
    while (!isdigit(ch)) flag |= ch == '-', ch = getchar();
    while (isdigit(ch)) res = (res << 3) + (res << 1) + (ch ^ 48), ch = getchar();
    res = flag ? -res : res;
}
template<typename Type, typename... Other>
inline void read(Type &res, Other&... y) { read(res), read(y...); }

int fib[100];
map<PII, int> dp;
bool vis[N];

int dfs(int cur, int idx)
{
    if (!cur) return 1;
    if (dp.count(PII(cur, idx))) return dp[PII(cur, idx)];
    int res = 0;

    // for (int i = 87; i >= 0; i --)
    for (int i = idx + 1; i <= 87; i ++)
        if (cur >= fib[i])
            res += dfs(cur - fib[i], i);
    return dp[PII(cur, idx)] = res;
}

signed main()
{
    fib[0] = fib[1] = 1;
    for (int i = 2; i < 90; i ++) fib[i] = fib[i - 1] + fib[i - 2];
    
    int T; read(T);
    while (T --)
    {
        int x; read(x);
        cout << dfs(x, 0) << '\n';
    }

    return 0;
}

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 43ms
memory: 3148kb

input:

1000
571
1996
864
740
2193
2186
1327
1298
1473
1164
615
867
1434
2176
442
1533
813
1090
847
1392
954...

output:

18
22
20
7
8
24
22
20
6
5
11
25
16
34
13
11
10
24
9
12
12
10
9
8
21
17
18
24
14
10
3
27
12
10
3
26
2...

result:

ok 1000 numbers

Test #2:

score: 10
Accepted
time: 78ms
memory: 4112kb

input:

1000
3356
1171
136
1062
3011
1035
572
3025
1649
2608
912
2332
2317
3454
1638
1219
2158
2577
3029
158...

output:

36
25
7
7
48
20
9
34
17
28
18
19
32
40
9
2
30
13
39
17
27
2
4
16
32
6
20
36
20
20
38
16
15
18
40
14
...

result:

ok 1000 numbers

Test #3:

score: 10
Accepted
time: 104ms
memory: 5492kb

input:

1000
2050
378
4960
4668
2948
1963
2018
292
2678
2495
101
2950
4914
1251
2319
3253
1537
4206
676
2037...

output:

34
6
25
48
36
18
24
6
28
20
3
24
44
18
24
18
26
12
21
42
7
40
32
37
51
32
14
24
11
24
23
35
14
21
40...

result:

ok 1000 numbers

Test #4:

score: 0
Time Limit Exceeded

input:

1000
104219
800
26539
61330
5714
5364
31307
19569
81083
92568
123288
53335
80239
107835
102985
2248
...

output:


result:


Test #5:

score: 0
Time Limit Exceeded

input:

1000
157832
190060
170249
203038
145928
276268
181737
444496
14683
311941
19456
60574
361256
209132
...

output:


result:


Test #6:

score: 0
Time Limit Exceeded

input:

1000
14080208
88545879
19525576
73869550
29790859
35683476
34070290
55040452
41239264
80671558
34083...

output:


result:


Test #7:

score: 0
Time Limit Exceeded

input:

1000
440550064
431992015
780562848
560891500
136906959
874374877
803701364
912120737
617697408
81277...

output:


result:


Test #8:

score: 0
Time Limit Exceeded

input:

1000
384997060794894
3052576495984458
2515613738333319
2758137799841781
2771826157513722
25973702479...

output:


result:


Test #9:

score: 0
Time Limit Exceeded

input:

1000
438790986257646999
739257800188095523
841238673343474427
320309202621474808
554464838878161478
...

output:


result:


Test #10:

score: 10
Accepted
time: 1ms
memory: 1220kb

input:

30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

output:

1
1
2
1
2
2
1
3
2
2
3
1
3
3
2
4
2
3
3
1
4
3
3
5
2
4
4
2
5
3

result:

ok 30 numbers