标签:around together idt line 传送门 lines += produced http
4 5 -1Sample Output
21 39
模板题, 当然是直接上板子啦; 有对Polya定理不懂的小伙伴点这里 : 传送门
#include<iostream> #include<cmath> using namespace std; #define ll long long ll Pow(int value,int num) { __int64 sum=1; for(int i=1;i<=num;i++) sum*=value; return sum; } int gcd(int a, int b) { if(b) return gcd(b, a%b); else return a; } ll polya(int col, int num) // col 表示颜色种类, num 表示换环的长度 { ll sum = 0; for(int i = 1; i <= num; i++) { sum += Pow(col, gcd(num,i)); } if(num&1) sum += num*(Pow(col, num/2+1)); else sum += (Pow(col, num/2) + Pow(col, num/2+1))*(num/2); return sum/2/num; } int main() { int n; while(cin >> n, n != -1) { if(n == 0) cout << 0 << endl; else { ll ans = polya(3,n); cout << ans << endl; } } return 0; }
Necklace of Beads (polya定理的引用)
标签:around together idt line 传送门 lines += produced http
原文地址:https://www.cnblogs.com/mrh-acmer/p/9465553.html