Submission #54119205


Source Code Expand

#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

#define _GLIBCXX_DEBUG
// kyopuro2.cpp : このファイルには 'main' 関数が含まれています。プログラム実行の開始と終了がそこで行われます。
//

#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>
#include <algorithm>
#include <ctime>
#include <functional>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <tuple>
#include <cassert>
#include <bitset>
#include <sstream>
#include <stdlib.h>
using namespace std;

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define eb emplace_back

const long long INF = 1LL << 60;
const long long MOD = 998244353;
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }

using ll = long long;
using ch = char;
using st = string;
using vi = vector<int>;
using vll = vector<ll>;
using vb = vector<bool>;
using vc = vector<ch>;
using vs = vector<st>;
using vvi = vector<vi>;
using vvll = vector<vll>;
using vvb = vector<vb>;
using vvc = vector<vc>;
using vvs = vector<vs>;
using P = pair<int, int>;
using Pll = pair<ll, ll>;
using vP = vector <P>;
using vPll = vector<Pll>;
using p_qi = priority_queue<int>;

// 深さ優先探索
vector<bool> seen(300009, false);
void dfs(const vvll& G, ll v, ll& c, ll& e) {
    c++;
    seen[v] = true; // v を訪問済にする
    // v から行ける各頂点 next_v について
    for (auto next_v : G[v]) {
        e++;
        if (seen[next_v]) continue;

        dfs(G, next_v, c, e); // 再帰的に探索
    }
}
///
ll powpow(ll x, ll n) {
    if (n == 0) return 1;
    ll val = powpow(x, n / 2);
    val *= val;
    if (n % 2 == 1) val *= x;
    return val;
}
int dx[] = { -1,0,1,0 }; int dy[] = { 0,1,0,-1 };
char ldru[] = { 'L','D','R','U' };

int main() {
    vll twos(63);
    twos[0] = 1;
    rep(g, 62) {
        twos[g + 1] = twos[g] * 2;
    }
    ll N, M;
    cin >> N >> M;
    bitset<64> bs1(M);
    ll ans = 0;
    ll o = 0;
    rep(i, 62) {
        ll x = (twos[i+1]);
        ll y = (twos[i]);
        if (bs1[i]) {
            ans += (N / x) * y;
            ans %= MOD;
            ans += max(o, (N % x) - y + 1);
            ans %= MOD;
        }
    }
    cout << ans;
}


// プログラムの実行: Ctrl + F5 または [デバッグ] > [デバッグなしで開始] メニュー
// プログラムのデバッグ: F5 または [デバッグ] > [デバッグの開始] メニュー

// 作業を開始するためのヒント: 
//    1. ソリューション エクスプローラー ウィンドウを使用してファイルを追加/管理します 
//   2. チーム エクスプローラー ウィンドウを使用してソース管理に接続します
//   3. 出力ウィンドウを使用して、ビルド出力とその他のメッセージを表示します
//   4. エラー一覧ウィンドウを使用してエラーを表示します
//   5. [プロジェクト] > [新しい項目の追加] と移動して新しいコード ファイルを作成するか、[プロジェクト] > [既存の項目の追加] と移動して既存のコード ファイルをプロジェクトに追加します
//   6. 後ほどこのプロジェクトを再び開く場合、[ファイル] > [開く] > [プロジェクト] と移動して .sln ファイルを選択します


Submission Info

Submission Time
Task D - Masked Popcount
User michael_80
Language C++ 20 (Clang 16.0.6)
Score 400
Code Size 3714 Byte
Status AC
Exec Time 1 ms
Memory 3736 KiB

Compile Error

./Main.cpp:1:13: warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma GCC target("avx2")
            ^
./Main.cpp:2:13: warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma GCC optimize("O3")
            ^
./Main.cpp:3:13: warning: unknown pragma ignored [-Wunknown-pragmas]
#pragma GCC optimize("unroll-loops")
            ^
./Main.cpp:33:17: warning: unused variable 'INF' [-Wunused-const-variable]
const long long INF = 1LL << 60;
                ^
4 warnings generated.

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 49
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 3576 KiB
sample_02.txt AC 1 ms 3592 KiB
sample_03.txt AC 1 ms 3704 KiB
test_01.txt AC 1 ms 3728 KiB
test_02.txt AC 1 ms 3660 KiB
test_03.txt AC 1 ms 3560 KiB
test_04.txt AC 1 ms 3556 KiB
test_05.txt AC 1 ms 3564 KiB
test_06.txt AC 1 ms 3604 KiB
test_07.txt AC 1 ms 3564 KiB
test_08.txt AC 1 ms 3668 KiB
test_09.txt AC 1 ms 3496 KiB
test_10.txt AC 1 ms 3592 KiB
test_11.txt AC 1 ms 3532 KiB
test_12.txt AC 1 ms 3592 KiB
test_13.txt AC 1 ms 3608 KiB
test_14.txt AC 1 ms 3564 KiB
test_15.txt AC 1 ms 3564 KiB
test_16.txt AC 1 ms 3596 KiB
test_17.txt AC 1 ms 3524 KiB
test_18.txt AC 1 ms 3604 KiB
test_19.txt AC 1 ms 3564 KiB
test_20.txt AC 1 ms 3468 KiB
test_21.txt AC 1 ms 3660 KiB
test_22.txt AC 1 ms 3608 KiB
test_23.txt AC 1 ms 3604 KiB
test_24.txt AC 1 ms 3592 KiB
test_25.txt AC 1 ms 3592 KiB
test_26.txt AC 1 ms 3564 KiB
test_27.txt AC 1 ms 3592 KiB
test_28.txt AC 1 ms 3524 KiB
test_29.txt AC 1 ms 3656 KiB
test_30.txt AC 1 ms 3668 KiB
test_31.txt AC 1 ms 3528 KiB
test_32.txt AC 1 ms 3484 KiB
test_33.txt AC 1 ms 3736 KiB
test_34.txt AC 1 ms 3732 KiB
test_35.txt AC 1 ms 3528 KiB
test_36.txt AC 1 ms 3560 KiB
test_37.txt AC 1 ms 3732 KiB
test_38.txt AC 1 ms 3536 KiB
test_39.txt AC 1 ms 3664 KiB
test_40.txt AC 1 ms 3668 KiB
test_41.txt AC 1 ms 3464 KiB
test_42.txt AC 1 ms 3592 KiB
test_43.txt AC 1 ms 3592 KiB
test_44.txt AC 1 ms 3560 KiB
test_45.txt AC 1 ms 3592 KiB
test_46.txt AC 1 ms 3660 KiB