C - Ayoub and Lost Array

#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


猜你喜欢

转载自www.cnblogs.com/rainyskywx/p/10328351.html
今日推荐