QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#820549 | #4398. Luxury cruise ship | SGColin | AC ✓ | 1ms | 4112kb | C++20 | 896b | 2024-12-18 21:47:13 | 2024-12-18 21:47:13 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
inline ll rd() {
ll x = 0;
bool f = 0;
char c = getchar();
for (; !isdigit(c); c = getchar()) f |= (c == '-');
for (; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);
return f ? -x : x;
}
#define N 100007
int f[N];
inline void work() {
ll x = rd();
if (x < N) {printf("%d\n", f[x]); return;}
ll t = (x - 100000 + 364) / 365;
printf("%lld\n", f[x - t * 365] + t);
}
int main() {
memset(f, 0x3f, sizeof(f));
f[0] = 0;
for (int v = 7; v < N; ++v) f[v] = min(f[v], f[v - 7] + 1);
for (int v = 31; v < N; ++v) f[v] = min(f[v], f[v - 31] + 1);
for (int v = 365; v < N; ++v) f[v] = min(f[v], f[v - 365] + 1);
for (int v = 1; v < N; ++v)
if (f[v] > 1e9) f[v] = -1;
for (int t = rd(); t; --t) work();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 4112kb
input:
1000 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101...
output:
-1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 2 -1 -1 -1 -1 -1 -1 3 -1 -1 -1 -1 -1 -1 4 -1 -1 1 -1 -1 -1 5 -1 -1 2 -1 -1 -1 6 -1 -1 3 -1 -1 -1 7 -1 -1 4 -1 -1 -1 8 -1 -1 5 -1 -1 2 9 -1 -1 6 -1 -1 3 10 -1 -1 7 -1 -1 4 11 -1 -1 8 -1 -1 5 12 -1 -1 9 -1 -1 6 13 -1 3 10 -1 -1 7 14 -1 4 11 -1 -1 8 15 -1 5 12 -1 -...
result:
ok 1000 lines