日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数论】【Polya定理】poj1286 Necklace of Beads

發布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数论】【Polya定理】poj1286 Necklace of Beads 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Polya定理:設G={π1,π2,π3........πn}是X={a1,a2,a3.......an}上一個置換群,用m中顏色對X中的元素進行涂色,那么不同的涂色方案數為:1/|G|*(mC(π1)+mC(π2)+mC(π3)+...+mC(πk)).?其中C(πk)為置換πk的循環節的個數。

Polya定理的基礎應用。

你得算出旋轉和翻轉時,每種置換的循環節數。

旋轉時,每種置換的循環節數為gcd(n,i);

翻轉時,若n為奇數,共有n個循環節數為n+1>>1的置換,

若n為偶數,共有n/2個循環節數為n+2>>1的置換和n/2個循環節數為n>>1的置換。

#include<cstdio> #include<algorithm> #include<iostream> using namespace std; typedef long long ll; int n; ll Pow(int x,int p){ll res=1;for(int i=1;i<=p;++i){res*=(ll)x;}return res; } int main(){while(1){scanf("%d",&n);if(n==-1){break;}if(n==0){puts("0");continue;}ll sum=0;for(int i=1;i<=n;++i){sum+=Pow(3,__gcd(n,i));}if(n&1){sum+=(ll)n*Pow(3,n+1>>1);}else{sum+=(ll)(n>>1)*Pow(3,n+2>>1);sum+=(ll)(n>>1)*Pow(3,n>>1);}cout<<sum/(2ll*(ll)n)<<endl;}return 0; }

轉載于:https://www.cnblogs.com/autsky-jadek/p/6680449.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【数论】【Polya定理】poj1286 Necklace of Beads的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。