CF1261F.Xor-Set

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定两个整数集合 AA 和 BB,你需要输出集合 C={x∣x=a⊕b, a∈A, b∈B}C = \{x \mid x = a \oplus b,\, a \in A,\, b \in B\} 中所有元素的和,结果对 998244353998244353 取模,其中 ⊕\oplus 表示按位异或运算。每个数字只计数一次。

例如,如果 A={2,3}A = \{2, 3\} 且 B={2,3}B = \{2, 3\},你应该只计数整数 11 一次,尽管你可以通过 3⊕23 \oplus 2 和 2⊕32 \oplus 3 得到它。因此,这种情况下的答案是 1+0=11 + 0 = 1。

我们称区间 [l,r][l, r] 为整数集合 {l,l+1,…,r}\{l, l+1, \dots, r\}。

集合 AA 由 nAn_A 个区间的并集给出,集合 BB 由 nBn_B 个区间的并集给出。

输入格式

第一行包含一个整数 nAn_A(1≤nA≤1001 \le n_A \le 100)。

接下来的 nAn_A 行中,第 ii 行包含两个整数 lil_i 和 rir_i(1≤li≤ri≤10181 \le l_i \le r_i \le 10^{18}),描述集合 AA 的一个区间。

接下来一行包含一个整数 nBn_B(1≤nB≤1001 \le n_B \le 100)。

接下来的 nBn_B 行中,第 ii 行包含两个整数 ljl_j 和 rjr_j(1≤lj≤rj≤10181 \le l_j \le r_j \le 10^{18}),描述集合 BB 的一个区间。

注意,两个集合中的区间可能有重叠。

输出格式

输出一个整数,表示集合 C={x∣x=a⊕b, a∈A, b∈B}C = \{x \mid x = a \oplus b,\, a \in A,\, b \in B\} 中所有元素的和,对 998244353998244353 取模。

输入输出样例

  • 输入#1

    2
    3 5
    5 8
    3
    1 2
    1 9
    2 9
    

    输出#1

    112
    
  • 输入#2

    1
    1 9
    2
    2 4
    2 10
    

    输出#2

    120
    

说明/提示

在第二个样例中,可以发现集合 C={0,1,…,15}C = \{0,1,\dots,15\},也就是说所有 00 到 1515 之间的数字都可以表示为 a⊕ba \oplus b 的形式。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页