• hdu 5667 Sequence (矩阵快速幂)


    Sequence

     
     Accepts: 59
     
     Submissions: 650
     Time Limit: 2000/1000 MS (Java/Others)
     
     Memory Limit: 65536/65536 K (Java/Others)
    问题描述
    <span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">   </span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0em"></span><span class="strut bottom" style="display:inline-block; height:0em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span></span></span></span></span>Lcomyn 是个很厉害的选手,除了喜欢写17kb+的代码题,偶尔还会写数学题.他找到了一个数列:
    
    <span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">f_n=left{egin{matrix} 1 ,&n=1 \ a^b,&n=2 \ a^bf_{n-1}^cf_{n-2},&otherwise end{matrix}
    ight.</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:2.05911em"></span><span class="strut bottom" style="display:inline-block; height:3.61822em; vertical-align:-1.55911em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-right:0.10764em">f</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:0.15em; margin-right:0.05em; margin-left:-0.10764em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle cramped" style="display:inline-block; font-size:0.7em"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span><span class="mrel" style="margin-left:0.27778em">=</span><span class="minner textstyle uncramped" style="margin-left:0.27778em"><span class="style-wrap reset-textstyle textstyle uncramped" style="position:relative; font-size:1em"><span class="delimsizing mult" style=""><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:0.65001em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="delimsizinginner delim-size4" style="display:inline-block"><span style="font-family:KaTeX_Size4;">⎩</span></span></span><span style="display:block; height:0px; position:relative; top:-1e-05em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="delimsizinginner delim-size4" style="display:inline-block"><span style="font-family:KaTeX_Size4;">⎨</span></span></span><span style="display:block; height:0px; position:relative; top:-1.15002em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="delimsizinginner delim-size4" style="display:inline-block"><span style="font-family:KaTeX_Size4;">⎧</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span></span><span class="mord" style=""><span class="mtable" style=""><span class="col-align-c" style=""><span class="vlist" style="display:inline-block; text-align:center"><span style="display:block; height:0px; position:relative; top:-1.21911em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="mord textstyle uncramped" style="display:inline-block"><span class="mord" style="">1</span><span class="mpunct" style="">,</span></span></span><span style="display:block; height:0px; position:relative; top:-0.01em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="mord textstyle uncramped" style="display:inline-block"><span class="mord" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">a</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:-0.363em; margin-right:0.05em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle uncramped" style="display:inline-block; font-size:0.7em"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">b</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span><span class="mpunct" style="">,</span></span></span><span style="display:block; height:0px; position:relative; top:1.19911em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="mord textstyle uncramped" style="display:inline-block"><span class="mord" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">a</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:-0.363em; margin-right:0.05em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle uncramped" style="display:inline-block; font-size:0.7em"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">b</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span><span class="mord" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-right:0.10764em">f</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:0.248108em; margin-left:-0.10764em; margin-right:0.05em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle cramped" style="display:inline-block; font-size:0.7em"><span class="mord scriptstyle cramped" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span><span class="mbin" style="">−</span><span class="mord" style="">1</span></span></span></span><span style="display:block; height:0px; position:relative; top:-0.363em; margin-right:0.05em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle uncramped" style="display:inline-block; font-size:0.7em"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">c</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span><span class="mord" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-right:0.10764em">f</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:0.15em; margin-right:0.05em; margin-left:-0.10764em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle cramped" style="display:inline-block; font-size:0.7em"><span class="mord scriptstyle cramped" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span><span class="mbin" style="">−</span><span class="mord" style="">2</span></span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span><span class="mpunct" style="">,</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span><span class="arraycolsep" style="display:inline-block; 0.5em"></span><span class="arraycolsep" style="display:inline-block; 0.5em"></span><span class="col-align-c" style=""><span class="vlist" style="display:inline-block; text-align:center"><span style="display:block; height:0px; position:relative; top:-1.21911em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="mord textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span><span class="mrel" style="margin-left:0.27778em">=</span><span class="mord" style="margin-left:0.27778em">1</span></span></span><span style="display:block; height:0px; position:relative; top:-0.01em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="mord textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span><span class="mrel" style="margin-left:0.27778em">=</span><span class="mord" style="margin-left:0.27778em">2</span></span></span><span style="display:block; height:0px; position:relative; top:1.19911em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="mord textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">o</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">t</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">h</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">e</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-right:0.02778em">r</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-right:0.02691em">w</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">i</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">s</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">e</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span></span></span><span class="sizing reset-size5 size5 reset-textstyle textstyle uncramped nulldelimiter" style="display:inline-block; 0.12em; font-size:1em"></span></span></span></span></span></span>
    
    <span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">   </span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0em"></span><span class="strut bottom" style="display:inline-block; height:0em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span></span></span></span></span>他给了你几个数:<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">n</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.43056em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span></span></span></span></span>,<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">a</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.43056em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">a</span></span></span></span></span>,<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">b</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.69444em"></span><span class="strut bottom" style="display:inline-block; height:0.69444em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">b</span></span></span></span></span>,<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">c</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.43056em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">c</span></span></span></span></span>,你需要告诉他<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">f_n</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.69444em"></span><span class="strut bottom" style="display:inline-block; height:0.88888em; vertical-align:-0.19444em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-right:0.10764em">f</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:0.15em; margin-right:0.05em; margin-left:-0.10764em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle cramped" style="display:inline-block; font-size:0.7em"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span></span></span></span></span>模<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">p</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.625em; vertical-align:-0.19444em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">p</span></span></span></span></span>后的数值.
    输入描述
    <span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">   </span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0em"></span><span class="strut bottom" style="display:inline-block; height:0em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span></span></span></span></span>第一行一个数T,为测试数据组数.
    
    <span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">   </span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0em"></span><span class="strut bottom" style="display:inline-block; height:0em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span></span></span></span></span>每组数据一行,一行五个正整数,按顺序为<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">n</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.43056em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span></span></span></span></span>,<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">a</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.43056em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">a</span></span></span></span></span>,<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">b</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.69444em"></span><span class="strut bottom" style="display:inline-block; height:0.69444em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">b</span></span></span></span></span>,<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">c</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.43056em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">c</span></span></span></span></span>,<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">p</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.625em; vertical-align:-0.19444em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">p</span></span></span></span></span>.
    
    <span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">    1le T le 10,1le nle 10^{18}</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.814108em"></span><span class="strut bottom" style="display:inline-block; height:1.00855em; vertical-align:-0.19444em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord" style="">1</span><span class="mrel" style="margin-left:0.27778em">≤</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-left:0.27778em; margin-right:0.13889em">T</span><span class="mrel" style="margin-left:0.27778em">≤</span><span class="mord" style="margin-left:0.27778em">1</span><span class="mord" style="">0</span><span class="mpunct" style="">,</span><span class="mord" style="margin-left:0.16667em">1</span><span class="mrel" style="margin-left:0.27778em">≤</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-left:0.27778em">n</span><span class="mrel" style="margin-left:0.27778em">≤</span><span class="mord" style="margin-left:0.27778em">1</span><span class="mord" style=""><span class="mord" style="">0</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:-0.363em; margin-right:0.05em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle uncramped" style="display:inline-block; font-size:0.7em"><span class="mord scriptstyle uncramped" style=""><span class="mord" style="">1</span><span class="mord" style="">8</span></span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span></span></span></span></span>,<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">1le a,b,cle 10^9</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.814108em"></span><span class="strut bottom" style="display:inline-block; height:1.00855em; vertical-align:-0.19444em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord" style="">1</span><span class="mrel" style="margin-left:0.27778em">≤</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-left:0.27778em">a</span><span class="mpunct" style="">,</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-left:0.16667em">b</span><span class="mpunct" style="">,</span><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-left:0.16667em">c</span><span class="mrel" style="margin-left:0.27778em">≤</span><span class="mord" style="margin-left:0.27778em">1</span><span class="mord" style=""><span class="mord" style="">0</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:-0.363em; margin-right:0.05em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle uncramped" style="display:inline-block; font-size:0.7em"><span class="mord" style="">9</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span></span></span></span></span>,p是质数且<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">ple 10^9+7</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.814108em"></span><span class="strut bottom" style="display:inline-block; height:1.00855em; vertical-align:-0.19444em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">p</span><span class="mrel" style="margin-left:0.27778em">≤</span><span class="mord" style="margin-left:0.27778em">1</span><span class="mord" style=""><span class="mord" style="">0</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:-0.363em; margin-right:0.05em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle uncramped" style="display:inline-block; font-size:0.7em"><span class="mord" style="">9</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span><span class="mbin" style="margin-left:0.22222em">+</span><span class="mord" style="margin-left:0.22222em">7</span></span></span></span></span>.
    输出描述
    <span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">   </span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0em"></span><span class="strut bottom" style="display:inline-block; height:0em; vertical-align:0em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span><span class="mord mspace" style="display:inline-block"> </span></span></span></span></span>对每组数据输出一行一个数,输出<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">f_n</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.69444em"></span><span class="strut bottom" style="display:inline-block; height:0.88888em; vertical-align:-0.19444em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord" style=""><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic; margin-right:0.10764em">f</span><span class="vlist" style="display:inline-block"><span style="display:block; height:0px; position:relative; top:0.15em; margin-right:0.05em; margin-left:-0.10764em"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span><span class="reset-textstyle scriptstyle cramped" style="display:inline-block; font-size:0.7em"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">n</span></span></span><span class="baseline-fix" style="display:inline-table; height:0px; position:relative; table-layout:fixed"><span class="fontsize-ensurer reset-size5 size5" style="display:inline-block; font-size:1em"><span style="font-size:0em">​</span></span>​</span></span></span></span></span></span></span>对<span style=""><span class="katex" style="font-size:1.21em; font-family:KaTeX_Main; line-height:1.2; white-space:nowrap"><span class="katex-mathml" style="position:absolute; padding:0px; border:0px; height:1px; 1px; overflow:hidden">p</span><span class="katex-html" style="display:inline-block"><span class="strut" style="display:inline-block; height:0.43056em"></span><span class="strut bottom" style="display:inline-block; height:0.625em; vertical-align:-0.19444em"></span><span class="base textstyle uncramped" style="display:inline-block"><span class="mord mathit" style="font-family:KaTeX_Math;font-style:italic">p</span></span></span></span></span>取模后的数值.
    输入样例
    1
    5 3 3 3 233
    输出样例
    190

    观察递推式我们可以发现,所有的f_ifi都是aa的幂次,所以我们可以对fif_ifi取一个以aa为底的loglog,即gi=loga fig_i=log_a f_i

    那么递推式变成gi=b+c∗gi−1+gi−2g_i=b+c*g_{i-1}+g_{i-2},这个式子可以矩阵乘法

    这题有一个小trick,注意a mod p=0a mod p=0的情况.

    分析:根据题解化简找出那个行列式,然后就求gi。需要注意的是gi是指数,根据费马小定理,指数%(p-1)即可。

    a ^ b % c = a ^(b % phi(c) + phi(c)) % c; 因为c是质数,所以这里的phi就为c - 1;所以只要用矩阵幂的时候% c -1,答案% c即可



    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    ll mod;
    struct mat
    {
       ll m[3][3];
    };
    mat mul(mat a,mat b)
    {
        mat c;
        memset(c.m,0,sizeof(c.m));
        for(int k=0;k<3;k++)
            for(int i=0;i<3;i++)
            for(int j=0;j<3;j++)
            c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j]%(mod-1))%(mod-1);
        return c;
    }
    mat qmod(mat a,ll k)
    {
        mat c;
        for(int i=0;i<3;i++)
            for(int j=0;j<3;j++)c.m[i][j]=(i==j);
        for(;k;k>>=1){
            if(k&1)c=mul(c,a);
            a=mul(a,a);
        }
        return c;
    }
    ll po(ll x, ll k)
    {
        ll res = 1;
        for(;k;k>>=1){
            if(k&1)res=res*x%mod;
            else x=x*x%mod;
        }
        return res;
    }
    int main()
    {
        //freopen("f.txt","r",stdin);
        int  T;
        ll a,b,c, n;
        scanf("%d",&T);
        while(T--){
            scanf("%lld%lld%lld%lld%lld",&n,&a,&b,&c,&mod);
            if(n==1){
                printf("1
    ");continue;
            }
            else if(n==2){
                ll res=po(a,b);
                printf("%lld
    ",res);continue;
            }
            mat ans;
            ans.m[0][0]=c;ans.m[0][1]=1;ans.m[0][2]=0;
            ans.m[1][0]=1;ans.m[1][1]=ans.m[1][2]=0;
            ans.m[2][0]=b;ans.m[2][1]=0;ans.m[2][2]=1;
            ans=qmod(ans,n-2);
            ll res=1;
            ll k=ans.m[0][0]*b+ans.m[2][0];
            res=po(a,k);
            printf("%lld
    ",res);
        }
        return 0;
    }





  • 相关阅读:
    【LeetCode】150.逆波兰表达式(栈+数组 两种方法,java实现)
    【LeetCode】494. 目标和(枚举,动规,背包三种方法,java实现)
    【LeetCode】137.克隆图(dfs+bfs,java实现)
    java 面向对象(十二):面向对象的特征二:继承性 (一) 前言
    链表常用操作
    回溯法—八皇后问题
    回溯法—实例
    回溯法—子集树与排列树
    使用sklearn进行集成学习——实践
    使用sklearn进行集成学习——理论
  • 原文地址:https://www.cnblogs.com/01world/p/5651225.html
Copyright © 2020-2023  润新知