rainyroad

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
#include<iostream>
#include<cstdio>
#define maxn 200007
const int mod=1e9+7;
typedef long long ll;
using namespace std;
ll dp[maxn][3];
int n,l,r;
int main()
{
    int x,y,z;
    cin>>n>>l>>r;
    x=r/3-(l-1)/3,y=(r+2)/3-(l+1)/3,z=(r+1)/3-(l)/3;
    dp[0][0]=1,dp[0][1]=dp[0][2]=0;
    for(int i=1;i<=n;i++)
    {
        dp[i][0]=(dp[i-1][0]*x%mod+dp[i-1][1]*z%mod+dp[i-1][2]*y%mod)%mod;
        dp[i][1]=(dp[i-1][0]*y%mod+dp[i-1][1]*x%mod+dp[i-1][2]*z%mod)%mod;
        dp[i][2]=(dp[i-1][0]*z%mod+dp[i-1][1]*y%mod+dp[i-1][2]*x%mod)%mod;
    }
    cout<<dp[n][0];
    return 0


 

posted on 2019-01-27 22:53  rainyroad  阅读(143)  评论(0编辑  收藏  举报