ACM-ICPC 2018 徐州赛区网络预赛 A. Hard to prepare 圆形排列染色

题目链接:https://nanti.jisuanke.com/t/A2000
题目大意:有n个人和(2^k)种不同颜色帽子。每种帽子有无数顶。问:使所有人和相邻的人的帽子都不同的方案数?

图片说明

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int mod=1e9+7;

LL qpow(LL a, LL b){
    if(!a) return 0;
    LL ans=1;
    while(b){
        if(b&1){
            ans=ans*a%mod;
        }
        a=a*a%mod;
        b>>=1;
    }
    return ans;
}

LL pow2[1000005]={1};
LL DP(LL n, LL k){
    if(n==1) return pow2[k];
    if(n==2) return pow2[k]*(pow2[k]-1)%mod;
    LL ans=(pow2[k]*qpow(pow2[k]-1, n-2)%mod)*(pow2[k]-2);
    ans=(ans+mod+DP(n-2, k))%mod;
    return ans;
}

int main() {
    for(int i=1; i<1000005; i++){
        pow2[i]=pow2[i-1]*2%mod;
    }
    int T; scanf("%d", &T);
    while(T--){
        int n, k; scanf("%d%d", &n, &k);
        printf("%lld\n", DP(n, k));
    }

    return 0;
}
全部评论

相关推荐

3.21&nbsp;一面自我介绍有一个新的业务,你会怎么做?(数仓建模方式)数仓分层有什么好处介绍一下Spark的join方式(broadcast&nbsp;join,&nbsp;shuffle&nbsp;hash&nbsp;join,sort-merge&nbsp;join)shuffle&nbsp;hash&nbsp;join&nbsp;和&nbsp;sort-merge&nbsp;join&nbsp;Spark常用的join是哪个?介绍一下MapReduce的执行过程Hive&nbsp;SQL优化星型模型、雪花模型的区别及应用场景介绍项目,项目分层是如何实现的项目的ods层数据是如何得到的,dws层是如何设计的sql&nbsp;:&nbsp;1、求在线店铺的月累积销售金额&nbsp;2、求相邻在线店铺的月累积销售金额的差额sum()&nbsp;ove...
OceanRivers:感觉现在的企业是真抽象,找实习生要求要有实习经历(我要是有实习经历还要来找实习吗),这和校招招应届生的要求有啥区别,按这逻辑以后是不是毕业找工作直接要求一年以上工作经验,也不知道是现在行业卷到这地步了还是企业单纯不想花更多资源培养新人,就想着招有工作经验的牛马,入职直接酷酷工作,然后给他发实习生水平的薪资当廉价劳动力
查看18道真题和解析
点赞 评论 收藏
分享
02-28 17:01
门头沟学院 C++
俊朗的铁猫希望被捞:兄弟如果只想搞钱的话,你这个简历最适合的其实是辅导机构做dai写啥的真的特别赚
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务