HDU 5269 字典树

<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
  
  (
  
  
   
   T10
  
  )组数据,对于每组数据:
第一行一个正整数
  
  
   
   n
  
  ,表示数组长度
第二行
  
  
   
   n
  
  个非负整数,第
  
  
   
   i
  
  个整数为
  
  
   
   Ai
  
  

  
  
   
   n[1,5104]
  
  
  
  
   
   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);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值