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

时间:2014-08-13 13:15:06   收藏:0   阅读:201

题目链接:uva 10294 - Arif in Dhaka (First Love Part 2)

题目大意:项链和手镯都是由若珠子穿成的环形首饰,区别在于手镯可以翻转,但是项链不行。给定n和t,表示用t种颜色的n个珠子能制作的项链和手镯的个数。

解题思路:等价类计数,一共两种置换,旋转或者翻转。

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
typedef unsigned long long ll;
const int maxn = 50;

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

int main () {
    int n, t;
    ll p[maxn];
    while (scanf("%d%d", &n, &t) == 2) {
        p[0] = 1;
        for (int i = 1; i <= n; i++) {
            p[i] = p[i-1] * t;
            printf("%lld\n", p[i]);
        }

        ll a = 0, b = 0;
        for (int i = 0; i < n; i++)
            a += p[gcd(n, i)];

        if (n&1)
            b = n * p[(n+1)/2];
        else
            b = n / 2 * (p[n/2+1] + p[n/2]);
        printf("%lld %lld\n", a / n, (a + b) / 2 / n);
    }
    return 0;
}

uva 10294 - Arif in Dhaka (First Love Part 2)(置换),布布扣,bubuko.com

原文:http://blog.csdn.net/keshuai19940722/article/details/38533165

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!