博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU2865 Birthday Toy
阅读量:7197 次
发布时间:2019-06-29

本文共 2048 字,大约阅读时间需要 6 分钟。

题目链接:

题意:n个小圆组成的正n边形,中间有一个大圆。有木棍相连的两个圆不能有相同的颜色,旋转后相同视为相同的方案,求着色方案数。

思路:中间选一种颜色,剩下的是K-1种。设K=K-1。设f[n]表示n个小球的合法方案数。其中第一个和第n个的颜色不同。若第一个与第n-1个颜色相同,f[n]=f[n-2]*(K-1),否则f[n]=f[n-1]*(K-2),所以f[n]=f[n-2]*(K-1)+f[n-1]*(K-2)。因此,枚举n的约数t,则ans=sigama(f[t]*eular(n/t))。

int n,K;class Matrix{public:    i64 a[N][N];    Matrix()    {        clr(a,0);    }    void init(int x)    {        if(x==0) a[0][0]=a[0][1]=a[1][0]=a[1][1]=0;        else if(x==1) a[0][0]=a[1][1]=1,a[0][1]=a[1][0]=0;        else        {            a[0][0]=K-2;            a[0][1]=1;            a[1][0]=K-1;            a[1][1]=0;        }    }};Matrix operator*(Matrix &a,Matrix &b){    int i,j,k;    Matrix p;    p.init(0);    FOR0(i,2) FOR0(j,2) FOR0(k,2)    {        (p.a[i][j]+=a.a[i][k]*b.a[k][j]%mod)%=mod;    }    return p;}Matrix operator^(Matrix a,int t){    Matrix ans;    ans.init(1);    while(t)    {        if(t&1) ans=ans*a;        a=a*a;        t>>=1;    }    return ans;}Matrix a;int prime[M],tag[M],cnt;vector
factor;void init(){ int i,j; for(i=2;i<180;i++) if(!tag[i]) { for(j=i*i;j
1) ans=ans/n*(n-1); return ans;}i64 exGcd(i64 a,i64 b,i64 &x,i64 &y){ if(!b) { x=1;y=0; return a; } i64 r=exGcd(b,a%b,x,y); i64 temp=x; x=y; y=temp-a/b*y; return r;}i64 reverse(int a){ i64 x,y; exGcd(a,mod,x,y); x=(x%mod+mod)%mod; return x;}i64 get(int n){ i64 ans=0; if(n==1) ans=0; else if(n==2) ans=(i64)K*(K-1)%mod; else if(n==3) ans=(i64)K*(K-1)%mod*(K-2)%mod; else { a.init(2); a=a^(n-3); ans+=a.a[0][0]*K%mod*(K-1)%mod*(K-2)%mod; ans+=a.a[1][0]*K%mod*(K-1)%mod; } return ans%mod;}int main(){ init(); while(scanf("%d%d",&n,&K)!=-1) { K--; split(); i64 ans=0; int i; FOR0(i,SZ(factor)) { ans+=get(factor[i])*eular(n/factor[i])%mod; if(ans>=mod) ans-=mod; } ans=ans*reverse(n)%mod*(K+1)%mod; printf("%I64d\n",ans); } return 0;}

  

转载地址:http://vstkm.baihongyu.com/

你可能感兴趣的文章
聊一聊python的单例模式
查看>>
第十一篇、RxSwift
查看>>
复分析学习9——全纯函数各阶导数在紧集上的一致估计
查看>>
run_test() 验证平台的入口
查看>>
PHP网站,两个域名在一个空间,如何做301转向
查看>>
Mysql系列五:数据库分库分表中间件mycat的安装和mycat配置详解
查看>>
Web References - There was an error downloading 'http://localhost:/xxx/xxx.asmx'
查看>>
Python之禅及释义
查看>>
laravel5.4 开发简书网站
查看>>
设置类库项目的程序集名称和默认命名空间
查看>>
对属性NaN的理解纠正和对Number.isNaN() 、isNaN()方法的辨析
查看>>
【转】iOS lame编译 arm64 armv7s armv7 x86_64 i386指令集
查看>>
LeetCode-二叉树的最大深度
查看>>
Linux内核剖析(五)Linux内核的构建过程
查看>>
19、生鲜电商平台-安全设计与架构
查看>>
Django_06_项目完成
查看>>
寻找子字符串int find_substr(char *s1, char *s2)
查看>>
Manifest.xml中不要出现重复的uses-permission声明
查看>>
UFS文件系统简明学习笔记
查看>>
详解Redis 的持久化机制--RDB和AOF
查看>>