CodeForces 630 I. Parking Lot(排列组合)

 

有 2*n-2 个车位 ,有 4 种车,车可以看作为无穷多,当且仅当 n 辆相同种类的车挨在一起时,老板会很开心,问有多少种方式让老板开心

对于每种车而言:

有 n 辆放在停车场的两端时,此时还剩 n-2 个位置,需要用另一种颜色的车将其分隔开,剩下的每个位子可以放任意的车 ,即  2(表示两端)*4*3*4^(n-3)

 当这 n 辆车不放在两端时,对于这 n 辆车有 n-3 个位置可以放, 在这 n 辆车的两端都要放置与其对应的不同颜色的车,此时还剩 n-4 个位置可以随便放,4*(n-3)*3*3*4^(n-4)

    ll pow_mod(ll a,int x)
    {
        if(x<0) return 1;
        ll ans=1;
        while(x){
            if(x&1) ans*=a;
            a=a*a;
            x>>=1;
        }
        return ans;
    }

int main()
{
    IOS;
    ll n;
    while( cin>>n ){
        ll ans=2*4*3*pow_mod(4,n-3);
        ans+=4*(n-3)*3*3*pow_mod(4,n-4);
        cout<<ans<<endl;    
    }
    //PAUSE;
    return 0;
}

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页