QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#544330#7679. Master of Both IVucup-team2179#WA 522ms9496kbC++202.0kb2024-09-02 15:08:412024-09-02 15:08:41

Judging History

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

  • [2024-09-02 15:08:41]
  • 评测
  • 测评结果:WA
  • 用时:522ms
  • 内存:9496kb
  • [2024-09-02 15:08:41]
  • 提交

answer

#include<bits/stdc++.h>
// #define int long long
#define pii pair<int, int>
using namespace std;
const int maxn = 1e5 + 10;
const int M = 998244353;
int K = 20;
struct L{
    int n=0, rnk=0;
    int cnt = 1;
    int num[22]{};
    void add(int u){
        n++;
        for (int i = K; i >= 0;i--){
            if(u&(1<<i)){
                if(num[i])
                    u ^= num[i];
                else {
                    num[i] = u;
                    rnk++;
                    return;
                }
            }
        }
        cnt = cnt * 2 % M;
    }
    int query(int u){
        for (int i = K; i >= 0;i--){
            if(u&(1<<i)){
                if(num[i])
                    u ^= num[i];
            }
        }
        if(u==0)
            return 1;
        else
            return 0;
    }
    void insert(int a,int b){
        add(a);
        for (int i = 0; i < b - 1;i++)
            cnt = cnt * 2 % M;
    }
};
map<int, int> mp;
int work(int u){
    if(u==0){
        L now;
        for(auto [a,b]:mp){
            // cout << a << " " << b << "\n";
            now.insert(a, b);
        }
        return (now.cnt * now.query(0) - 1+M)%M;
    }
    else {
        L now;
        for (int i = 1; i * i <= u;i++)
        if(u%i==0){
            if(mp.count(i)){
                now.insert(i, mp[i]);
            }
            if(mp.count(u/i)&&(i*i!=u)){
                now.insert(u / i, mp[u / i]);
            }
        }
        return now.cnt * now.query(u);
    }


}

void solve(){
    int n;
    cin >> n;
    mp.clear();
    for (int i = 0; i < n;i++){
        int u;
        cin >> u;
        mp[u]++;
    }
    int ans = 0;
    for (int i = 0; i <= n;i++){
        ans += work(i);
    }
    cout << ans % M<<'\n';
}   

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    int t;
    cin >>t;
    while(t--){
        solve();
    }

    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3528kb

input:

2
3
1 2 3
5
3 3 5 1 1

output:

4
11

result:

ok 2 number(s): "4 11"

Test #2:

score: 0
Accepted
time: 31ms
memory: 3616kb

input:

40000
5
4 2 5 5 5
5
5 5 5 5 4
5
1 4 4 4 2
5
2 5 2 4 1
5
3 2 4 5 3
5
1 5 5 3 4
5
5 5 5 4 3
5
4 3 3 5 1
5
4 5 5 2 1
5
2 5 4 2 5
5
3 4 3 4 3
5
5 3 5 1 3
5
5 1 2 4 4
5
4 2 5 1 5
5
5 4 2 5 4
5
5 2 5 2 4
5
1 4 5 4 5
5
4 2 3 2 3
5
1 4 1 3 5
5
1 1 2 1 5
5
5 2 5 1 3
5
3 1 2 5 3
5
5 5 1 1 5
5
2 2 2 1 3
5
3 1 ...

output:

9
16
9
9
8
8
9
8
8
9
13
8
8
8
8
9
12
9
11
15
8
8
17
13
8
11
8
8
8
13
15
9
9
8
8
8
11
9
11
13
15
9
17
9
8
8
8
13
11
8
9
11
8
8
11
15
9
8
9
8
8
15
11
8
17
9
15
8
8
8
12
9
9
11
8
13
9
8
15
8
8
9
8
8
8
15
8
11
13
8
9
11
8
19
11
13
19
17
13
15
8
8
8
9
8
9
13
15
17
9
9
17
9
11
9
9
11
9
9
11
8
9
9
13
15
11...

result:

ok 40000 numbers

Test #3:

score: 0
Accepted
time: 45ms
memory: 3616kb

input:

20000
10
1 3 6 8 3 1 10 7 2 3
10
8 2 8 9 10 5 8 4 8 3
10
2 2 10 1 6 4 4 3 4 7
10
6 5 10 7 8 7 3 1 6 6
10
3 2 3 7 8 4 9 8 8 7
10
9 9 6 4 9 3 9 10 5 9
10
10 8 9 10 10 4 5 1 4 3
10
2 10 4 5 8 10 2 2 7 2
10
2 6 4 10 1 1 1 1 2 3
10
1 10 2 8 1 5 9 4 3 1
10
8 1 8 1 9 5 6 7 2 9
10
1 6 7 4 8 8 7 3 5 7
10
10 ...

output:

97
77
82
74
75
84
75
105
159
95
81
74
78
75
73
73
83
93
90
84
79
77
73
89
77
74
81
79
80
207
83
77
83
78
87
85
84
97
75
80
117
75
113
74
75
95
77
83
86
77
99
73
77
83
91
96
77
80
77
76
84
81
73
95
83
74
75
81
77
79
75
78
78
81
97
77
85
73
92
83
73
80
73
81
74
73
142
83
99
78
91
77
76
81
77
74
78
76
...

result:

ok 20000 numbers

Test #4:

score: 0
Accepted
time: 55ms
memory: 3608kb

input:

10000
20
5 12 4 16 11 20 3 1 3 13 19 16 3 17 15 9 10 18 19 13
20
4 17 14 3 3 10 6 17 16 17 16 8 1 15 13 12 8 12 10 9
20
18 11 5 11 5 5 9 3 17 10 6 8 5 10 11 15 19 9 10 11
20
7 7 12 13 20 9 14 17 1 10 13 20 10 19 3 12 1 8 8 3
20
13 20 17 12 6 1 16 5 3 2 18 7 2 7 20 1 12 4 7 1
20
15 6 13 1 10 5 13 3 4...

output:

32801
32799
32832
32817
32955
65621
32919
32865
32843
32798
32792
32843
32796
32823
32803
32807
32797
32859
32806
32799
32806
32813
32893
32798
32798
32799
32832
32792
32825
32817
32867
32795
32806
32796
32794
32943
32795
32791
65732
32842
32841
32841
32806
32804
32852
32795
32867
32798
32841
32823
...

result:

ok 10000 numbers

Test #5:

score: 0
Accepted
time: 48ms
memory: 3560kb

input:

16666
12
11 11 9 7 10 9 7 5 4 8 3 3
12
8 6 8 9 3 10 10 9 1 4 5 10
12
2 1 4 1 2 8 7 11 8 7 5 9
12
4 6 11 11 9 11 3 10 4 9 10 6
12
6 2 11 4 10 9 5 9 5 8 9 2
12
9 10 5 2 2 2 3 6 4 11 8 8
12
7 6 5 4 1 11 1 6 11 9 9 3
12
4 5 11 12 1 3 3 9 4 4 1 11
12
6 9 9 11 4 7 10 5 6 9 8 1
12
7 1 2 1 6 11 8 5 8 8 2 6
...

output:

269
268
283
268
274
283
277
295
268
291
269
855
275
287
344
299
291
277
329
274
281
276
267
268
268
270
338
275
297
315
273
307
303
302
269
279
272
278
281
302
270
301
295
268
303
279
303
267
279
297
326
272
270
287
287
277
273
276
296
307
274
271
281
278
277
311
273
277
275
315
272
272
293
278
285
...

result:

ok 16666 numbers

Test #6:

score: -100
Wrong Answer
time: 522ms
memory: 9496kb

input:

1
199999
31326 93089 143392 198151 77233 59844 54715 190000 165927 171095 37063 5018 63088 44405 71037 25580 164377 88095 161549 177275 27730 70339 43759 118378 142428 109706 184253 60233 148241 30394 137958 92664 199171 166535 103239 164430 53636 191124 72007 81005 84139 162416 72120 123920 67659 1...

output:

973099930

result:

wrong answer 1st numbers differ - expected: '201346582', found: '973099930'