QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#41420#1085. Brave Seekers of UnicornsAntistarAC ✓74ms19332kbC++20546b2022-07-30 15:09:342022-07-30 15:09:37

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-07-30 15:09:37]
  • 评测
  • 测评结果:AC
  • 用时:74ms
  • 内存:19332kb
  • [2022-07-30 15:09:34]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
const int mo = 998244353;
using ll = long long;
ll sum[N], dp[N];

int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    dp[i] = sum[i - 1] + 1;
    int cur = i;
    int x = 1;
    while (cur) {
      if ((cur & 1) && cur != 1) {
        (dp[i] += (mo - sum[min((x << 1) - 1, i)] + sum[min(x - 1, i)]) % mo) %= mo;
      }
      cur >>= 1;
      x <<= 1;
    }
    sum[i] = (sum[i - 1] + dp[i]) % mo;
  }
  printf("%lld\n", sum[n]);
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 5752kb

input:

1

output:

1

result:

ok 1 number(s): "1"

Test #2:

score: 0
Accepted
time: 0ms
memory: 5688kb

input:

2

output:

3

result:

ok 1 number(s): "3"

Test #3:

score: 0
Accepted
time: 1ms
memory: 5820kb

input:

3

output:

6

result:

ok 1 number(s): "6"

Test #4:

score: 0
Accepted
time: 2ms
memory: 5768kb

input:

5

output:

26

result:

ok 1 number(s): "26"

Test #5:

score: 0
Accepted
time: 2ms
memory: 5808kb

input:

322

output:

782852421

result:

ok 1 number(s): "782852421"

Test #6:

score: 0
Accepted
time: 3ms
memory: 5684kb

input:

10

output:

728

result:

ok 1 number(s): "728"

Test #7:

score: 0
Accepted
time: 3ms
memory: 5752kb

input:

100

output:

234222727

result:

ok 1 number(s): "234222727"

Test #8:

score: 0
Accepted
time: 3ms
memory: 5828kb

input:

10000

output:

348787098

result:

ok 1 number(s): "348787098"

Test #9:

score: 0
Accepted
time: 74ms
memory: 19268kb

input:

1000000

output:

246427510

result:

ok 1 number(s): "246427510"

Test #10:

score: 0
Accepted
time: 68ms
memory: 19324kb

input:

999999

output:

525546416

result:

ok 1 number(s): "525546416"

Test #11:

score: 0
Accepted
time: 63ms
memory: 18784kb

input:

950000

output:

154241852

result:

ok 1 number(s): "154241852"

Test #12:

score: 0
Accepted
time: 62ms
memory: 19332kb

input:

999888

output:

254589934

result:

ok 1 number(s): "254589934"

Test #13:

score: 0
Accepted
time: 63ms
memory: 19192kb

input:

999423

output:

917909701

result:

ok 1 number(s): "917909701"

Test #14:

score: 0
Accepted
time: 41ms
memory: 13544kb

input:

600000

output:

546076071

result:

ok 1 number(s): "546076071"

Test #15:

score: 0
Accepted
time: 3ms
memory: 5772kb

input:

1337

output:

616951443

result:

ok 1 number(s): "616951443"