zoukankan      html  css  js  c++  java
  • POJ 1286 Necklace of Beads(Polya定理)

    点我看题目

    题意 :给你3个颜色的n个珠子,能组成多少不同形式的项链。

    思路 :这个题分类就是polya定理,这个定理看起来真的是很麻烦啊T_T.......看了有个人写的不错:

    Polya定理:

    (1)设G是p个对象的一个置换群,用k种颜色突然这p个对象,若一种染色方案在群G的作用下变为另一种方案,则这 两个方案当作是同一种方案,这样的不同染色方案数为:

    (2)置换及循环节数的计算方法:对于有n个位置的手镯,有n种旋转置换和n种翻转置换.
    对于旋转置换: c(fi) = gcd(n,i)  i为一次转过i颗宝石( i = 0 时 c=n;);

    对 于翻转置换: 如果n为偶数:c(f) = n/2 的置换有n/2个; c(f) = n/2+1 的置换有n/2个; 如 果n为奇数:c(f) = n/2+1.

    #include <stdio.h>
    #include <math.h>
    
    #define LL long long
    
    using namespace std;
    
    LL gcd(LL a,LL b)
    {
        return b > 0 ? gcd(b,a%b) : a ;
    }
    int main()
    {
        LL c ;
        while (scanf("%lld", &c) != EOF)
        {
            if(c == -1) break ;
            if(c == 0)
            {
                printf("0
    ") ;continue ;
            }
            LL sum = 0;
            for (LL i = 0 ; i < c ; i++)
                sum += pow(3, gcd(i, c));
            if (c & 1)//奇数
                sum += c * pow(3,c / 2 + 1);
            else
                sum += c / 2 * pow(3, c / 2) + c / 2 * pow(3, c / 2 + 1);
            sum /= c * 2;
            printf("%d
    ", sum);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Docker容器Centos容器安装openssh
    DEVOPS技术实践_15:使用Docker作为Jenkins的slave
    DEVOPS技术实践_14:使用docker部署jenkins
    oracle数据库创建实例
    Java 覆写初探
    Java super和this小结
    Java 继承学习
    Java 数据表映射
    Java 单向链表学习
    Java 继承初探
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3562541.html
Copyright © 2011-2022 走看看