<pre class="problem-content" style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom: 10px; line-height: 1.42857143; color: rgb(51, 51, 51); word-break: break-all; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; background-color: rgb(245, 245, 245);">ZYB喜欢研究Xor,现在他得到了一个长度为<span class="MathJax_Preview" style="box-sizing: border-box; color: rgb(136, 136, 136);"></span><span class="MathJax" id="MathJax-Element-1-Frame" role="textbox" aria-readonly="true" style="box-sizing: border-box; display: inline; line-height: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px;"><nobr style="box-sizing: border-box; transition: none; -webkit-transition: none; border: 0px; padding: 0px; margin: 0px; max-width: 5000em; max-height: 5000em; min-width: 0px; min-height: 0px; vertical-align: 0px;"><span class="math" id="MathJax-Span-1" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0.635em;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0.575em; height: 0px; font-size: 14px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.571em 1000em 2.455em -0.626em); top: -2.229em; left: 0em;"><span class="mrow" id="MathJax-Span-2" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span class="mi" id="MathJax-Span-3" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">n</span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border-width: 0px 0px 0px 0em; border-left-style: solid; padding: 0px; margin: 0px; vertical-align: -0.089em; overflow: hidden; width: 0px; height: 0.639em;"></span></span></nobr></span>的数组A。于是他想知道:对于所有数对<span class="MathJax_Preview" style="box-sizing: border-box; color: rgb(136, 136, 136);"></span><span class="MathJax" id="MathJax-Element-2-Frame" role="textbox" aria-readonly="true" style="box-sizing: border-box; display: inline; line-height: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px;"><nobr style="box-sizing: border-box; transition: none; -webkit-transition: none; border: 0px; padding: 0px; margin: 0px; max-width: 5000em; max-height: 5000em; min-width: 0px; min-height: 0px; vertical-align: 0px;"><span class="math" id="MathJax-Span-4" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 10.942em;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 10.208em; height: 0px; font-size: 14px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.263em 1000em 2.694em -0.553em); top: -2.229em; left: 0em;"><span class="mrow" id="MathJax-Span-5" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span class="mo" id="MathJax-Span-6" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">(</span><span class="mi" id="MathJax-Span-7" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">i</span><span class="mo" id="MathJax-Span-8" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">,</span><span class="mi" id="MathJax-Span-9" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.167em; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">j</span><span class="mo" id="MathJax-Span-10" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">)</span><span class="mo" id="MathJax-Span-11" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">(</span><span class="mi" id="MathJax-Span-12" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">i</span><span class="mo" id="MathJax-Span-13" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.278em; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">∈</span><span class="mo" id="MathJax-Span-14" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.278em; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">[</span><span class="mn" id="MathJax-Span-15" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">1</span><span class="mo" id="MathJax-Span-16" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">,</span><span class="mi" id="MathJax-Span-17" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.167em; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">n</span><span class="mo" id="MathJax-Span-18" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">]</span><span class="mo" id="MathJax-Span-19" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">,</span><span class="mi" id="MathJax-Span-20" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.167em; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">j</span><span class="mo" id="MathJax-Span-21" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.278em; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">∈</span><span class="mo" id="MathJax-Span-22" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.278em; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">[</span><span class="mn" id="MathJax-Span-23" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">1</span><span class="mo" id="MathJax-Span-24" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">,</span><span class="mi" id="MathJax-Span-25" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.167em; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">n</span><span class="mo" id="MathJax-Span-26" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">]</span><span class="mo" id="MathJax-Span-27" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">)</span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border-width: 0px 0px 0px 0em; border-left-style: solid; padding: 0px; margin: 0px; vertical-align: -0.344em; overflow: hidden; width: 0px; height: 1.224em;"></span></span></nobr></span>,<span class="MathJax_Preview" style="box-sizing: border-box; color: rgb(136, 136, 136);"></span><span class="MathJax" id="MathJax-Element-3-Frame" role="textbox" aria-readonly="true" style="box-sizing: border-box; display: inline; line-height: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px;"><nobr style="box-sizing: border-box; transition: none; -webkit-transition: none; border: 0px; padding: 0px; margin: 0px; max-width: 5000em; max-height: 5000em; min-width: 0px; min-height: 0px; vertical-align: 0px;"><span class="math" id="MathJax-Span-28" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 7.865em;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 7.333em; height: 0px; font-size: 14px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.263em 1000em 2.739em -0.609em); top: -2.229em; left: 0em;"><span class="mrow" id="MathJax-Span-29" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span class="mi" id="MathJax-Span-30" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">l</span><span class="mi" id="MathJax-Span-31" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">o</span><span class="mi" id="MathJax-Span-32" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">w</span><span class="mi" id="MathJax-Span-33" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">b</span><span class="mi" id="MathJax-Span-34" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">i</span><span class="mi" id="MathJax-Span-35" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">t</span><span class="mo" id="MathJax-Span-36" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">(</span><span class="msubsup" id="MathJax-Span-37" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 1.153em; height: 0px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.297em 1000em 2.444em -0.612em); top: -2.229em; left: 0em;"><span class="mi" id="MathJax-Span-38" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">A</span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; top: -2.079em; left: 0.791em;"><span class="mi" id="MathJax-Span-39" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-size: 12px; font-family: MathJax_Math; font-style: italic;">i</span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span></span><span class="mi" id="MathJax-Span-40" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">x</span><span class="mi" id="MathJax-Span-41" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">o</span><span class="mi" id="MathJax-Span-42" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">r</span><span class="msubsup" id="MathJax-Span-43" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 1.225em; height: 0px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.297em 1000em 2.444em -0.612em); top: -2.229em; left: 0em;"><span class="mi" id="MathJax-Span-44" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">A</span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; top: -2.079em; left: 0.791em;"><span class="mi" id="MathJax-Span-45" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-size: 12px; font-family: MathJax_Math; font-style: italic;">j</span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span></span><span class="mo" id="MathJax-Span-46" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">)</span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border-width: 0px 0px 0px 0em; border-left-style: solid; padding: 0px; margin: 0px; vertical-align: -0.392em; overflow: hidden; width: 0px; height: 1.271em;"></span></span></nobr></span>之和为多少.由于答案可能过大,你需要输出答案对998244353取模后的值
定义lowbit(x)=<span class="MathJax_Preview" style="box-sizing: border-box; color: rgb(136, 136, 136);"></span><span class="MathJax" id="MathJax-Element-4-Frame" role="textbox" aria-readonly="true" style="box-sizing: border-box; display: inline; line-height: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px;"><nobr style="box-sizing: border-box; transition: none; -webkit-transition: none; border: 0px; padding: 0px; margin: 0px; max-width: 5000em; max-height: 5000em; min-width: 0px; min-height: 0px; vertical-align: 0px;"><span class="math" id="MathJax-Span-47" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 1.173em;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 1.078em; height: 0px; font-size: 14px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.129em 1000em 2.444em -0.597em); top: -2.229em; left: 0em;"><span class="mrow" id="MathJax-Span-48" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span class="msubsup" id="MathJax-Span-49" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 1.01em; height: 0px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.347em 1000em 2.444em -0.597em); top: -2.229em; left: 0em;"><span class="mn" id="MathJax-Span-50" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">2</span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; top: -2.622em; left: 0.503em;"><span class="mi" id="MathJax-Span-51" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-size: 12px; font-family: MathJax_Math; font-style: italic;">k</span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border-width: 0px 0px 0px 0em; border-left-style: solid; padding: 0px; margin: 0px; vertical-align: -0.077em; overflow: hidden; width: 0px; height: 1.099em;"></span></span></nobr></span>,其中k是最小的满足(<span class="MathJax_Preview" style="box-sizing: border-box; color: rgb(136, 136, 136);"></span><span class="MathJax" id="MathJax-Element-5-Frame" role="textbox" aria-readonly="true" style="box-sizing: border-box; display: inline; line-height: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px;"><nobr style="box-sizing: border-box; transition: none; -webkit-transition: none; border: 0px; padding: 0px; margin: 0px; max-width: 5000em; max-height: 5000em; min-width: 0px; min-height: 0px; vertical-align: 0px;"><span class="math" id="MathJax-Span-52" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0.635em;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0.575em; height: 0px; font-size: 14px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.571em 1000em 2.455em -0.612em); top: -2.229em; left: 0em;"><span class="mrow" id="MathJax-Span-53" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span class="mi" id="MathJax-Span-54" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">x</span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border-width: 0px 0px 0px 0em; border-left-style: solid; padding: 0px; margin: 0px; vertical-align: -0.089em; overflow: hidden; width: 0px; height: 0.639em;"></span></span></nobr></span> <span class="MathJax_Preview" style="box-sizing: border-box; color: rgb(136, 136, 136);"></span><span class="MathJax" id="MathJax-Element-6-Frame" role="textbox" aria-readonly="true" style="box-sizing: border-box; display: inline; line-height: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px;"><nobr style="box-sizing: border-box; transition: none; -webkit-transition: none; border: 0px; padding: 0px; margin: 0px; max-width: 5000em; max-height: 5000em; min-width: 0px; min-height: 0px; vertical-align: 0px;"><span class="math" id="MathJax-Span-55" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 1.788em;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 1.653em; height: 0px; font-size: 14px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.319em 1000em 2.455em -0.614em); top: -2.229em; left: 0em;"><span class="mrow" id="MathJax-Span-56" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span class="mi" id="MathJax-Span-57" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">a</span><span class="mi" id="MathJax-Span-58" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">n</span><span class="mi" id="MathJax-Span-59" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Math; font-style: italic;">d<span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; overflow: hidden; height: 1px; width: 0.003em;"></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border-width: 0px 0px 0px 0em; border-left-style: solid; padding: 0px; margin: 0px; vertical-align: -0.089em; overflow: hidden; width: 0px; height: 0.908em;"></span></span></nobr></span> <span class="MathJax_Preview" style="box-sizing: border-box; color: rgb(136, 136, 136);"></span><span class="MathJax" id="MathJax-Element-7-Frame" role="textbox" aria-readonly="true" style="box-sizing: border-box; display: inline; line-height: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px;"><nobr style="box-sizing: border-box; transition: none; -webkit-transition: none; border: 0px; padding: 0px; margin: 0px; max-width: 5000em; max-height: 5000em; min-width: 0px; min-height: 0px; vertical-align: 0px;"><span class="math" id="MathJax-Span-60" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 3.404em;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 3.163em; height: 0px; font-size: 14px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.129em 1000em 2.694em -0.597em); top: -2.229em; left: 0em;"><span class="mrow" id="MathJax-Span-61" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span class="msubsup" id="MathJax-Span-62" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: relative; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 1.01em; height: 0px;"><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; clip: rect(1.347em 1000em 2.444em -0.597em); top: -2.229em; left: 0em;"><span class="mn" id="MathJax-Span-63" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">2</span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; position: absolute; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; top: -2.622em; left: 0.503em;"><span class="mi" id="MathJax-Span-64" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-size: 12px; font-family: MathJax_Math; font-style: italic;">k</span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span></span><span class="mo" id="MathJax-Span-65" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">)</span><span class="mo" id="MathJax-Span-66" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.278em; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">></span><span class="mn" id="MathJax-Span-67" style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline; position: static; border: 0px; padding: 0px 0px 0px 0.278em; margin: 0px; vertical-align: 0px; font-family: MathJax_Main;">0</span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border: 0px; padding: 0px; margin: 0px; vertical-align: 0px; width: 0px; height: 2.229em;"></span></span></span><span style="box-sizing: border-box; transition: none; -webkit-transition: none; display: inline-block; position: static; border-width: 0px 0px 0px 0em; border-left-style: solid; padding: 0px; margin: 0px; vertical-align: -0.344em; overflow: hidden; width: 0px; height: 1.367em;"></span></span></nobr></span>的数
特别地:lowbit(0)=0
输入描述
一共 T ( T≤10 )组数据,对于每组数据: 第一行一个正整数 n ,表示数组长度 第二行 n 个非负整数,第 i 个整数为 Ai n∈[1,5∗104] , Ai∈[0,229]
输出描述
每组数据输出一行Case #x: ans。x表示组数编号,从1开始。ans为所求值。解题思路:
建立字典树,每输入一个数对其做一次计算,加上之前的和他不同的个数,因为是无序的,最后乘以2.
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string.h>
#include<algorithm>
#define mod 998244353
using namespace std;
int ans; const int maxt=30*51000;
int bit[35];
int tree[maxt][2];
int num[maxt];
struct trie
{
int tot;
void init()
{
tot=1;
memset(tree,0,sizeof(tree));
memset(num,0,sizeof(num));
}
int newnode()
{
num[++tot]=0;
tree[tot][0]=tree[tot][1]=0;
return tot;
}
void insert(int val)
{
int p=1;int temp;
for(int i=0;i<=29;i++)
{
++num[p];
if((val>>i)&1) temp=1;else temp=0;
// cout<<p<<" "<<temp<<" "<<tree[p][temp]<<" "<<num[tree[p][temp^1]]<<endl;
if(tree[p][temp]!=0)
{
ans+=bit[i]*num[tree[p][temp^1]];
// cout<<bit[i]<<" "<<num[tree[p][temp^1]]<<endl;
ans%=mod;
}
else
{
tree[p][temp]=newnode();
tree[p][temp^1]=newnode();
}
p=tree[p][temp];
}
}
};
int main()
{
int cas;
// freopen("102.txt","r",stdin);
scanf("%d",&cas);
// cout<<cas<<endl;
bit[0]=1;
for(int i=1;i<=30;i++)
bit[i]=2*bit[i-1];
int n,a;
for(int ca=1;ca<=cas;ca++)
{
trie sov;
sov.init();
scanf("%d",&n);
ans=0;
for(int i=1;i<=n;i++)
scanf("%d",&a),sov.insert(a);
// cout<<ans<<endl;
ans=ans*2%mod;
printf("Case #%d: %d\n",ca,ans);
}
}