QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#637274#7304. Coins 2liuziaoTL 25ms4688kbC++141.2kb2024-10-13 11:57:142024-10-13 11:57:15

Judging History

你现在查看的是最新测评结果

  • [2024-10-13 11:57:15]
  • 评测
  • 测评结果:TL
  • 用时:25ms
  • 内存:4688kb
  • [2024-10-13 11:57:14]
  • 提交

answer

#include <bits/stdc++.h>

// #define int int64_t

const int kMaxN = 105;

int n;
int a[kMaxN];

namespace Sub1 {
const int kMaxS = 1e6 + 5;

bool f[kMaxS];

void solve() {
  std::fill_n(f, kMaxS, 0);
  f[0] = 1;
  int d = 0;
  int64_t sum = 0;
  for (int i = 1; i <= n; ++i) {
    if (a[i]) d = std::__gcd(d, i);
    sum += 1ll * i * a[i];
  }
  if (!d) return void(std::cout << "1\n");
  for (int i = 1; i <= n; ++i) {
    static int lst[kMaxN];
    std::fill_n(lst, i, -1);
    for (int j = 0; j <= 1e6; ++j) {
      if (f[j]) lst[j % i] = j;
      if (lst[j % i] != -1 && (j - lst[j % i]) / i <= a[i]) f[j] = 1;
    }
  }
  int64_t ans = 0;
  for (int i = 0; i <= 1e6; ++i) ans += f[i];
  if (sum > 1e6) ans += sum / d - 1000000 / d;
  std::cout << ans << '\n';
}
} // namespace Sub1

void dickdreamer() {
  for (int i = 1; i <= n; ++i) std::cin >> a[i];
  Sub1::solve();
}

int32_t main() {
#ifdef ORZXKR
  freopen("in.txt", "r", stdin);
  freopen("out.txt", "w", stdout);
#endif
  std::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);
  int T = 1;
  // std::cin >> T;
  while (std::cin >> n) dickdreamer();
  // std::cerr << 1.0 * clock() / CLOCKS_PER_SEC << "s\n";
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 17ms
memory: 4688kb

input:

3
0 1 2
3
0 2 3

output:

6
12

result:

ok 2 number(s): "6 12"

Test #2:

score: 0
Accepted
time: 25ms
memory: 4684kb

input:

1
0
15
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000

output:

1
120000000001

result:

ok 2 number(s): "1 120000000001"

Test #3:

score: -100
Time Limit Exceeded

input:

5
0 2 1 0 0
5
0 0 0 0 53
5
0 6 3 0 0
5
1 0 0 0 1
5
1 0 0 0 0
5
2 0 0 0 116
5
2 0 0 0 0
5
1 0 1 106 1356
5
0 2 0 0 7926
5
0 0 2 1 2004
5
1 0 0 0 1
5
0 0 0 1 5
5
0 0 0 0 0
5
0 1 32840 0 1
5
2 0 0 0 12
5
2 0 0 1 1
5
0 1 79 56770 10
5
1 0 0 1 0
5
0 1 1 2 52165
5
0 0 0 0 1
5
0 0 1 13 0
5
0 0 0 1 10
5
0 0...

output:


result: