ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#214858 | #2733. 8.4t3 | ThySecret | 40 | 226ms | 5492kb | C++11 | 1.5kb | 2024-11-22 19:58:09 | 2024-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;
}
详细
小提示:点击横条可展开更详细的信息
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