标签:
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 5378 | Accepted: 3596 |
Description
Input
Output
For each test case output on a single line the number of unique bracelets. The figure below shows the 8 different bracelets that can be made with 2 colors and 5 beads.Sample Input
1 1 2 1 2 2 5 1 2 5 2 6 6 2 0 0
Sample Output
1 2 3 5 8 13 21
Source
裸Polya。,经过旋转对称后一样的算一种。
这样公式套上。。。。
#include <iostream>
#include <cmath>
#include <vector>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
#include <list>
#include <algorithm>
#include <map>
#include <set>
#define LL long long
#define Pr pair<int,int>
#define fread() freopen("in.in","r",stdin)
#define fwrite() freopen("out.out","w",stdout)
using namespace std;
const int INF = 0x3f3f3f3f;
const int msz = 10000;
const int mod = 1e9+7;
const double eps = 1e-8;
int main()
{
//fread();
//fwrite();
int c,s;
int ans;
while(~scanf("%d%d",&c,&s) && (c+s))
{
ans = 0;
for(int i = 1; i <= s; ++i)
ans += (int)pow(1.0*c,__gcd(i,s));
if(s&1) printf("%d\n",(ans+(int)pow(1.0*c,(s+1)/2)*s)/(2*s));
else printf("%d\n",(ans+(int)pow(1.0*c,s/2)*(s/2)+(int)pow(1.0*c,(s-2)/2+2)*(s/2))/(2*s));
}
return 0;
}
标签:
原文地址:http://blog.csdn.net/challengerrumble/article/details/51439560