题意 :给你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 > ? gcd(b,a%b) : a ;
}
int main()
{
int c,s ;
while (scanf("%d %d", &c, &s) != EOF)
{
if(c == && s == ) break ;
int sum = ;
for (int i = ; i <= s; i++)
sum += pow(c, gcd(i, s));
if (s & )
sum += s * pow(c, s / + );
else
sum += s / * pow(c, s / ) + s / * pow(c, s / + );
sum /= s * ;
printf("%d\n", sum);
}
return ;
}