uva 10294

数目n,颜色t,项链旋转,手镯旋转且翻转,问各有多少种?

#include <iostream>
#include <cstdio>

using namespace std;
#define maxn 55
#define LL long long

int gcd(int a, int b)
{
    return a % b == 0 ? b : gcd(b, a % b);
}

LL p[maxn];
int n, t;

int main()
{
    while(~scanf("%d%d", &n, &t))
    {
        p[0] = 1;
        for(int i=1; i<=n; i++)  p[i] = p[i-1] * t;
        LL a = 0, b = 0;
        for(int i=0; i<n; i++)  a += p[gcd(i, n)];
        if(n&1) b = n * p[(n+1)>>1];
        else b = n * (p[n/2+1] + p[n/2]) / 2;
        printf("%I64d %I64d\n", a/n, (a+b)/2/n);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-01 14:33:01

uva 10294的相关文章

UVa 10294 Arif in Dhaka (First Love Part 2) Polya定理

题目来源:UVa 10294 Arif in Dhaka (First Love Part 2) 题意:n颗珠子t种颜色 求有多少种项链和手镯 项链不可以翻转 手镯可以翻转 思路:Polya定理  题目就是求等价类 项链只能旋转 手镯可以旋转也可以翻转 根据定理 等价类的数量等于各个置换f的t^m(f)的平均数 m(f)是置换的循环节数 下面每次t^x x都是循环节数 下面考虑手镯 旋转翻转都算 对于旋转 可以旋转0,1,...,n-1 每一个置换的循环节为gcd(0,n), gcd(1,n),

uva 10294 - Arif in Dhaka (First Love Part 2)(置换)

题目链接:uva 10294 - Arif in Dhaka (First Love Part 2) 题目大意:项链和手镯都是由若珠子穿成的环形首饰,区别在于手镯可以翻转,但是项链不行.给定n和t,表示用t种颜色的n个珠子能制作的项链和手镯的个数. 解题思路:等价类计数,一共两种置换,旋转或者翻转. 旋转:枚举间距0,1,2,3-,n?1,所以不动点a=∑i=0n?1tgcd(n,i) 翻转:当n为奇数时,对称轴有n条,每条对称轴形成n?12个长度为2的循环和一个长度为1的循环,所以不动点b1=

UVA 10294 Arif in Dhaka (First Love Part 2) Polya计数

题目链接 Polya计数入门题 10294 Arif in Dhaka (First Love Part 2) Our hero Arif is now in Dhaka (Look at problem 10244 – First Love if you want to know more about Arif, but that information is not necessary for this problem. In short, Arif is a brilliant progr

UVa 10294 (P&#243;lya计数) Arif in Dhaka (First Love Part 2)

Burnside定理:若一个着色方案s经过置换f后不变,称s为f的不动点,将置换f的不动点的数目记作C(f).等价类的数目等于所有C(f)的平均值. 一个项链,一个手镯,区别在于一个能翻转一个不能,用t种颜色染n颗珠子,求等价类的个数. 旋转置换群一共有n个置换,分别对应将项链整体逆时针旋转0个.1个.2个...珠子的置换. 对于第i个置换,第0个.i个.2i...个珠子构成一个循环,共有gcd(n, i)个循环,每个循环中有n / gcd(n, i)个珠子. 所以n个置换,每个置换的不动点有t

UVA - 10294 Arif in Dhaka (First Love Part 2) (Polya定理)

Description Problem L Arif in Dhaka (First Love Part 2) Input: standard input Output: standard output Time Limit: 2 seconds Our hero Arif is now in Dhaka (Look at problem 10244 – First Love if you want to know more about Arif, but that information is

UVA 10294 Arif in Dhaka (置换polya)

[题目链接]:click here~~ [题目大意]: 给你一串珠子(连接成了一个环),共有n个珠子组成,你有t种颜色,现在你来给这个珠子染色,问染成项链有多少种方法?染成手镯有多少种方法?在项链里,经过顺时针旋转后相同的算一个,在手镯里,经过顺时针旋转或者沿着对称轴兑换后一样的算一个.即不同之处在于项链不能够反转,而手镯可以反转. [思路]: 首先,我们来看看两个很有用的关于置换的定理,第一个就是Burnside 描述为:对于置换f,一种着色方案s经过一种置换后不变,则称这种着色方案s是f的不

UVA 10294 等价类计数

题目大意: 项链和手镯都是若干珠子穿成的环形首饰,手镯可以旋转和翻转,但项链只能旋转,给n个珠子,t种颜色,求最后能形成的手镯,项链的数量 这里根据等价类计数的polya定理求解 对于一个置换f,若一种方案经过置换后不改变,那么不改变的点的个数记作C(f) 统计所有的C(f) , 相加之后求和除以置换的种数即可 那么这道题里面 对于项链来说,旋转一个角度,也就是2*PI/n , 那么置换群可表示为 1 2 3 4 .... n 2 3 4 5 ... 1 这里就存在一个循环节 所以方案数为 t^

10294 - Arif in Dhaka (First Love Part 2) (数论置换)

UVA 10294 - Arif in Dhaka (First Love Part 2) 题目链接 题意:给定n个珠子,t种颜色, 问能组成几个项链和手镯(手镯能翻转,项链不能) 思路:利用Burnside求解,推理出旋转的循环个数是gcd(i, n),翻转的分为奇偶情况考虑 代码: #include <stdio.h> #include <string.h> const int N = 30; int t, next[N], vis[N], num[N]; char str[N

LA 3641 (置换 循环的分解) Leonardo&#39;s Notebook

给出一个26个大写字母的置换B,是否存在A2 = B 每个置换可以看做若干个循环的乘积.我们可以把这些循环看成中UVa 10294的项链, 循环中的数就相当于项链中的珠子. A2就相当于将项链旋转了两个珠子间的距离,珠子0.2.4...构成一个循环,一共有gcd(n, 2)个循环,每个循环的长度为n / gcd(n, 2) 所以当一个循环的长度为奇数的时候,平方以后还是原来的长度: 当一个循环的长度为偶数的时候,平方以后就会分解为两个长度都等于原来循环长度一半的循环. 先将置换B分解循环,对于其