【NOIP2012模拟10.6】填充棋盘
2016-10-04 21:54
411 查看
Description
Input
Output
题解
1 2 5
3 4 6
7 8 9
首先在左上角确定1、2、3、4,向5、6方向扩展方案总数乘2,向7、8方向扩展总数也乘2,这十分显然。再看4、6、8、9,而4、6、8在之前已今被确定了,9自然被确定了,为了符合题意,4、6、8、9只有十二种合法方案。
即总方案数为 (2^(n-1)+2^(m-1)-2)*12 。
代码
横一划竖一划,横一划竖一划…………小R画出了一个n*m的棋盘。 由于NOIP快要到了,小R有了一个奇妙的想法。 在棋盘的每一个小方格中填入N,O,I,P这4个字母中的一个,若棋盘中每一个2*2的小棋盘中都有N,O,I,P这4个字母,小R就认为这个棋盘是幸运棋盘。小R想知道一共有多少种不同的幸运棋盘。由于这个结果可能会很大,你只需输出对1,000,000,007取模后的值。
Input
两个整数n,m表示棋盘的大小。
Output
一个整数表示幸运棋盘的个数对1,000,000,007取模后的值。
题解
1 2 5
3 4 6
7 8 9
首先在左上角确定1、2、3、4,向5、6方向扩展方案总数乘2,向7、8方向扩展总数也乘2,这十分显然。再看4、6、8、9,而4、6、8在之前已今被确定了,9自然被确定了,为了符合题意,4、6、8、9只有十二种合法方案。
即总方案数为 (2^(n-1)+2^(m-1)-2)*12 。
代码
const mo=1000000007; var n,m:int64; function mi(x:int64):int64; begin if x=0 then exit(1) else begin mi:=sqr(mi(x div 2)) mod mo; if odd(x) then mi:=(mi*2) mod mo; exit(mi); end; end; procedure main; var ans:int64; begin ans:=(mi(n-1)+mi(m-1)-2) mod mo; ans:=(ans*12) mod mo; write(ans); end; begin readln(n,m); main; end.
相关文章推荐
- 高中OJ3012. 【NOIP2012模拟10.6】购买
- 【NOIP2012模拟10.6】购买
- 纪中3076【备战NOIP2012图论专项模拟试题】位图 题解
- 【NOIP2012模拟11.1】塔(加强)
- NOIP2012模拟10.29——麻将mahjong题解
- [JZOJ 3052]【NOIP2012模拟10.25】剪草
- 【NOIP2012模拟10.25】旅行
- JZOJ 5395. 【NOIP2017提高A组模拟10.6】Count
- 【NOIP2012模拟10.29】排列 一题总结
- jzoj3053. 【NOIP2012模拟10.25】旅行 (Standard IO)
- 拉格朗日插值法 【NOIP2017提高A组模拟10.6】Count
- 16.10.4 C:3046. 【NOIP2012模拟10.23】游戏
- 10.6 noip模拟试题
- 【NOIP 2012 Day1 T1】Vigenère密码(模拟)
- JZOJ3083. 【NOIP2012模拟11.1】塔(加强)
- JZOJ3052. 【NOIP2012模拟10.25】剪草
- 【NOIP2012模拟10.20】友好数对
- 高中OJ3046. 【NOIP2012模拟10.23】游戏
- 【NOIP2012模拟8.20】Memory
- jzoj 3076. 【备战NOIP2012图论专项模拟试题】位图