题意 :给你c种颜色的n个珠子,问你可以组成多少种形式。
思路 :polya定理的应用,与1286差不多一样,代码一改就可以交。。。。POJ 1286题解
#include <stdio.h> #include <iostream> #include <string.h> #include <math.h> #include <algorithm> using namespace std; int gcd(int a,int b) { return b > 0 ? gcd(b,a%b) : a ; } int main() { int c,s ; while (scanf("%d %d", &c, &s) != EOF) { if(c == 0 && s == 0) break ; int sum = 0; for (int i = 1; i <= s; i++) sum += pow(c, gcd(i, s)); if (s & 1) sum += s * pow(c, s / 2 + 1); else sum += s / 2 * pow(c, s / 2) + s / 2 * pow(c, s / 2 + 1); sum /= s * 2; printf("%d\n", sum); } return 0; }
原文:http://www.cnblogs.com/luyingfeng/p/3562547.html