zoukankan      html  css  js  c++  java
  • POJ1286

    Portal

    Description

    给出一个正整数(n(nleq23)),求用三种颜色对一个(n)个点的环染色的方案数。如果两种方案能够通过旋转/翻转来得到,则视为一种方案(即旋转同构,翻转同构)。

    Solution

    Polya裸题。
    (G)的由(n)个旋转置换和(n)个翻转置换构成。考虑每个置换的轮换数。
    对于顺时针旋转(x)个点的一个旋转置换,其轮换数为(gcd(x,n))。当(n)为奇数时,每个翻转置换的轮换数为(dfrac{n+1}{2});当(n)为偶数时,有一半翻转置换的轮换数为(dfrac{n}{2}+1),另一半的轮换数为(dfrac{n}{2})

    Solution

    //Necklace of Beads
    #include <cstdio>
    typedef long long lint;
    int gcd(int x,int y) {return y?gcd(y,x%y):x;}
    lint pow(int x,int y)
    {
        lint r=1,t=x;
        for(int i=y;i;i>>=1,t*=t) if(i&1) r*=t;
        return r;
    }
    int main()
    {
        while(true)
        {
            int n; scanf("%d",&n);
            if(n==0) {printf("0
    "); continue;}
            if(n<0) break;
            lint ans=0;
            for(int i=1;i<=n;i++) ans+=pow(3,gcd(i,n));
            if(n&1) ans+=n*pow(3,n+1>>1);
            else ans+=2*n*pow(3,n>>1);
            printf("%lld
    ",ans/n/2);
        }
        return 0;
    }
    
  • 相关阅读:
    解决uniapp中app.vue的onlaunch不能跳转页面问题
    参数校验注解,备用
    码云推送项目总是没有权限
    一句话解释回调函数
    动态管理
    转:用jupyter notebook打开指定目录下的.ipynb文件
    gcn变体
    图4
    节点分类
    图3
  • 原文地址:https://www.cnblogs.com/VisJiao/p/POJ1286.html
Copyright © 2011-2022 走看看