P84486

位运算 / Bit

贪心 位运算 快速幂
讨论 统计 2通过 7提交 28.6%通过率 旧版界面
时间限制 1 秒 内存限制 512 MB

题目描述

某天, chenbs 在写位运算时写出了如下 C++ 代码:

(11l<<i)

出题人非常害怕自己也这样写错,于是出了一道位运算题:

给定 n,x,y,z,让你构造 n 个数 $ai\ (1\le i\le n),使得 \mathop{\operatorname{and}}\limits{i=1}^n ai=x,\mathop{\operatorname{or}}\limits{i=1}^n ai=y,\mathop{\operatorname{xor}}\limits{i=1}^n ai=z 且 \prod\limits{i=1}^na_i 最大。其中 \operatorname{and},\operatorname{or},\operatorname{xor}$ 表示位运算中的与、或、异或。

如果存在这样的 $ai,你需要求出 \max\prod\limits{i=1}^na_i 对 998244\red{8}53 取模的值;否则请输出 -1$。

输入

本题有多组测试用例。

第一行输入一个正整数 T,表示测试用例组数。

接下来 T 行,每行输入四个非负整数 n,x,y,z。

输出

共 T 行,对于每组数据:

  • 如果无解,输出 -1;

  • 否则输出一个非负整数,表示 \max\prod\limits_{i=1}^na_i 对 998244\red{8}53 取模的值。

样例

样例 1
输入
2
3 2 7 6
8 6 55 36
输出
54
-1
样例 2
输入
4
9 2 7 6
18 3 5 0
4 1 59 24
841039 0 7 7
输出
6353046
-1
1464561
906098946

提示

样例解释

对于第一个样例的第一组数据,选择数字 3,3,6,因为 3\operatorname{and}3\operatorname{and}6=2,3\operatorname{or}3\operatorname{or}6=7,3\operatorname{xor}3\operatorname{xor}6=6 所以符合条件,可以证明乘积 54 最大。

对于第一个样例的第二组数据,不存在符合条件的序列 a。

数据范围

测试点n \lex,y,z <T \le
122^{30}10^4
242^4100
3, 450^^
5, 6^2^6^
7, 810^22^{30}^
9, 1010^4^^
11, 1210^{18}2^{60}10^2
13 \sim 15^^10^3
16 \sim 20^^10^4

对于所有数据,1\le n \le 10^{18},0\le x,y,z < 2^{60},1\le T \le 10^4。

来源

洛谷月赛

Tab 缩进 · 提交后可在下方查看评测状态
请先登录后再提交