1829H - Don't Blame Me - CodeForces Solution


bitmasks dp math

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    int t;cin >> t;
    while(t) {
        int n,k;cin >> n >> k;
        vector<int> a(n);
        for(int i=0;i<n;i++) cin >> a[i];
        int p = 1e9 + 7;
        vector<int> dp(64);
        for(int i=0;i<n;i++) {
            for(int j=0;j<=63;j++) {
                dp[j&a[i]] = (dp[j&a[i]] + dp[j]) % p;
            }
            dp[a[i]]++;
        }
        LL ans = 0;
        for(int i=0;i<=63;i++) {
            int x = i,cnt = 0;
            while(x) {
                cnt += x % 2;
                x /= 2;
            }
            if(cnt == k) ans = (ans + dp[i]) % p;
        }
        cout << ans << endl;
        t--;
    }
}


Comments

Submit
0 Comments
More Questions

1706A - Another String Minimization Problem
1695B - Circle Game
1702B - Polycarp Writes a String from Memory
1701A - Grass Field
489C - Given Length and Sum of Digits
886B - Vlad and Cafes
915A - Garden
356A - Knight Tournament
1330A - Dreamoon and Ranking Collection
1692B - All Distinct
1156C - Match Points
1675A - Food for Animals
1328C - Ternary XOR
1689A - Lex String
1708B - Difference of GCDs
863A - Quasi-palindrome
1478A - Nezzar and Colorful Balls
1581B - Diameter of Graph
404A - Valera and X
908A - New Year and Counting Cards
146A - Lucky Ticket
1594C - Make Them Equal
1676A - Lucky
1700B - Palindromic Numbers
702C - Cellular Network
1672C - Unequal Array
1706C - Qpwoeirut And The City
1697A - Parkway Walk
1505B - DMCA
478B - Random Teams