zoukankan      html  css  js  c++  java
  • [ACM] POJ 2409 Let it Bead (Polya计数)

    参考:https://blog.csdn.net/sr_19930829/article/details/38108871

     1 #include <iostream>
     2 #include <string.h>
     3 using namespace std;
     4 int c,n;//c种颜色,n个珠子
     5 int ans;
     6 
     7 int gcd(int a,int b)
     8 {
     9     return b==0?a:gcd(b,a%b);
    10 }
    11 
    12 int power(int p,int n)//快速幂求公式里的k的nc(g)次方
    13 {
    14     int ans=1;
    15     while(n)
    16     {
    17         if(n&1)
    18             ans*=p;
    19         p*=p;
    20         n/=2;
    21     }
    22     return ans;
    23 }
    24 
    25 int main()
    26 {
    27     while(cin>>c>>n&&(c||n))
    28     {
    29         ans=0;
    30         for(int i=1;i<=n;i++)
    31             ans+=power(c,gcd(n,i));//相当于求图3-1中左边的循环群染色数
    32         if(n&1)//是奇数,有n个包含(n/2+1)个循环节的循环群
    33             ans+=n*power(c,n/2+1);
    34         else
    35             ans+=(power(c,n/2+1)+power(c,n/2))*(n/2);
    36         ans/=2*n;//别忘了除以置换群的总个数
    37         cout<<ans<<endl;
    38     }
    39     return 0;
    40 }

  • 相关阅读:
    切换node版本
    vue 移动端组件
    vue 单元测试
    git
    每日日报
    每日日报
    每日日报
    01人月神话阅读笔记之三
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/hemeiwolong/p/9583595.html
Copyright © 2011-2022 走看看