zoukankan      html  css  js  c++  java
  • JZOJ 3013. 填充棋盘

    题目

    Description

    横一划竖一划,横一划竖一划…………小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取模后的值。

     

    Sample Input

    2 3

    Sample Output

    48
     

    Data Constraint

     
     

    Hint

    对于30%的数据,n,m≤10

    对于70%的数据,n,m≤1,000,000

    对于100%的数据,2≤n,m≤2,000,000,000

     

    分析

    • 显然,我们先以2*2为起点每向下就*2,向左*2
    • 所为这样下来就会出现限定数,所以不用管
    • 然后就去开始重复的24

    代码

     1 #include<iostream>
     2 #define mod 1000000007
     3 using namespace std;
     4 long long ksm(long long a,long long b)
     5 {
     6     long long x=a,ans=1;
     7     while (b)
     8     {
     9         if (b&1!=0) ans=ans*x%mod;
    10         x=x*x%mod;
    11         b>>=1;
    12     }
    13     return ans%mod;
    14 }
    15 int main ()
    16 {
    17     long long n,m;
    18     cin>>n>>m;
    19     long long a=ksm(2,n-1),b=ksm(2,m-1);
    20     cout<<(a+b-2)*12%mod;  
    21 }

     

    为何要逼自己长大,去闯不该闯的荒唐
  • 相关阅读:
    When to Partition a Table and an Index
    Hello, world
    提交
    SubmitOncePage:解决刷新页面造成的数据重复提交问题
    压缩ASP.NET中的ViewState
    asp.net千奇百怪的日历
    ICallbackEventHandler实现
    xml數據
    CrystalReports
    [转]Microsoft Visual Studio 2005中使用水晶报表
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/11134902.html
Copyright © 2011-2022 走看看