AKOJ正在加载中...

4543: #2213. 「SCOI2014」方伯伯打扑克

金币值:2 定数:1 时间限制:1.000 s 内存限制:256 M
正确:0 提交:0 正确率:0.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序

题目描述

方伯伯有一些空白的扑克(?)牌。方伯伯想要用这些牌来玩一个数学游戏。

方伯伯首先决定好他要用这些空白的扑克牌组成 mmm 个牌堆,每一堆牌的张数都是 222 的整数次幂。确切地说,第 iii 堆(注意:从 000 开始计数)牌将会有 2ni2^{n_i}2ni 张牌。方伯伯首先决定好第 000 堆牌要有 2n02^{n_0}2n0 张牌,然后将这堆牌从上到下按次序标记 1∼2n01 \sim 2^{n_0}12n0 的十进制数字。

方伯伯开始游戏前决定要先洗牌,他决定好要洗 x0x_0x0 次牌。他洗牌有一个固定的模式,每次洗牌操作等同于以下两个步骤的操作:

  1. 将所有奇数位上的牌依次取出组成新的一堆牌。
  2. 将新的一堆牌放在旧有的牌前面。

如当 n0=3n_0=3n0=3 时,第 000 堆牌从上到下一开始为 12345678,洗一次牌得到 13572468,洗两次牌得到 15263748

洗完牌后,方伯伯在心中决定好把其中从上往下数第 l0l_0l0 到第 r0r_0r0 张牌上的数字均加上一个数字 t0t_0t0,并依次(转换成二进制)异或之后得到一个异或值;方伯伯把第 000 堆牌的这个异或值取模 mod2n01 的值记作 ans0\mathrm{ans}_0ans0

类似地,方伯伯将按同样的方式用剩下的 m−1m-1m1 个牌堆。具体地说,他决定按照如下几个公式来对每一堆牌组进行游戏:

  1. 对于第 iii 堆牌,牌堆中将会有 2ni−12^{n_i-1}2ni1 张牌,并从上到下标有 1∼2ni−11\sim 2^{n_i-1}12ni1 的十进制整数。其中,ni=(ansi1+i1)mod5+basebase\mathrm{base}base 是一个方伯伯事先决定好的正整数。
  2. 方伯伯将会先决定好自己用来游戏的牌处于牌堆中的什么位置。方伯伯首先决定好他要看的第一张牌应该是第 lil_ili 张,其中 li=(2ansi1+li1+i1)mod2ni+1
  3. 方伯伯接着决定他要看的最后一张牌应该是第 rir_iri 张,其中 ri=(ansi1+1+l1mod2ni/22ni/2)mod2ni+1
  4. 因为上面两个式子并不简单,有可能会产生 li>ril_i>r_ili>ri 的结果,此时将它们的值互换。
  5. 想好自己要看什么牌后,方伯伯就会以此决定自己要洗 xix_ixi 次牌,其中 xi=(rili+ti1+i)mod2ni
  6. 方伯伯同时还会想好他要给每张牌要加上数字的是 tit_iti,其中 ti=(li+ri)mod2ni
  7. 方伯伯洗完牌后,把其中从上往下数第 lil_ili 到第 rir_iri 张牌上的数字均加上数字 tit_iti,并依次(转换成二进制)异或之后得到一个异或值;方伯伯把第 iii 堆牌的这个异或值取模 mod2ni1 的值记作 ansi\mathrm{ans}_iansi,接着回到第一步玩下一个牌堆。

方伯伯听说你有高超的信息学能力,他想知道你能否在他完成游戏前就算出最后一个牌堆,即第 m−1m-1m1 个牌堆,得到的游戏结果 ansm−1\mathrm{ans}_{m-1}ansm1。你能做到吗?

输入格式

第一行包含一个整数 mmm,表示牌组的个数。 接下来一行包含六个整数,分别为 n0,x0,l0,r0,t0,Basen_0, x_0 ,l_0 ,r_0, t_0 , \mathrm{Base}n0,x0,l0,r0,t0,Base

输出格式

输出为一个数,表示最后的答案。

样例

样例输入

2
5 1 4 27 3 15

样例输出

2700

数据范围与提示

对于所有数据,m≤5000000, ni≤60, 0<li≤ri≤2ni, 0<xi,ti<109, Base≤55m \leq 5000000,\ n_i \leq 60,\ 0<l_i \leq r_i \leq 2^{n_i},\ 0<x_i,t_i<10^9,\ \mathrm{Base} \leq 55m5000000, ni60, 0<liri2n function transform(){ let height=850; //let width=parseInt(document.body.clientWidth*0.52); //let width2=parseInt(document.body.clientWidth*0.48); //let width=parseInt(document.body.clientWidth*0.52); //let width2=parseInt(document.body.clientWidth*0.48); //原来是3 7和6 4 let width=parseInt(document.body.clientWidth*0.52); let width2=parseInt(document.body.clientWidth*0.48); let submitURL=$("#submit")[0].href; console.log(width); let main=$("#main"); let problem=main.html(); if (window.screen.width < 500){ main.parent().append("

"); $("#submitPage").html(""); window.setTimeout('$("#ansFrame")[0].scrollIntoView()',1000); }else{ main.removeClass("container"); main.css("width",width2); main.css("margin-left","10px"); main.parent().append("
"); $("#submitPage").html(""); } $("#submit").remove(); $("#submitPage").prepend("
"); var dotsHTML = `
`; $("#dragButton").html(dotsHTML); $(document).ready(function() { let isDragging = false; let startX = 0; let initialWidth = 0; function setIframeReadonly (readonly) { const iframe = $("#submitPage").find('iframe') if (readonly) { iframe.css({ position: 'relative', 'z-index': -999 }) } else { iframe.css({ position: 'static', 'z-index': 'unset' }) } } // 鼠标按下时开始拖拽,颜色变为绿色 $("#dragButton").mousedown(function(event) { if (event.target === this) { // Only allow dragging if the mouse button is clicked on the drag button itself isDragging = true; startX = event.pageX; initialWidth = parseInt($("#main").css("width")); $(this).css("background-color", "#cfcccc"); setIframeReadonly(true) } }); // 拖拽过程中更新宽度 $(document).mousemove(function(event) { if (isDragging) { let diffX = event.pageX - startX; let newWidth = initialWidth + diffX; $("#main").css("width", newWidth); $("#submitPage").css("right", "-" + newWidth + "px"); $("#submitPage").find("iframe").attr("width", document.body.clientWidth - newWidth + "px"); } }); // 鼠标释放时停止拖拽,恢复原始颜色 $(document).mouseup(function() { if (isDragging) { $("#dragButton").css("background-color", "rgb(241 228 228)"); } isDragging = false; setIframeReadonly(false) }); // 鼠标移开页面或失焦时停止拖拽,恢复原始颜色 $(document).mouseleave(function() { if (isDragging) { $("#dragButton").css("background-color", "rgb(241 228 228)"); } isDragging = false; setIframeReadonly(false) }); $(window).blur(function() { if (isDragging) { $("#dragButton").css("background-color", "#cfcccc"); } isDragging = false; setIframeReadonly(false) }); }); } function submit_code() { if (!$('#submit_code input[name=answer]').val().trim() && !editor.getValue().trim()) return false; $('#submit_code input[name=language]').val($('#languages-menu .item.active').data('value')); lastSubmitted = editor.getValue(); $('#submit_code input[name=code]').val(editor.getValue()); return true; } // $('#languages-menu')[0].scrollTop = $('#languages-menu .active')[0].offsetTop - $('#languages-menu')[0].firstElementChild.offsetTop; $(function () { $('#languages-menu .item').click(function() { $(this) .addClass('active') .closest('.ui.menu') .find('.item') .not($(this)) .removeClass('active') ; editor.getSession().setMode("ace/mode/" + $(this).data('mode')); }); });