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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

组合数学中的项链计数

發布時間:2025/3/11 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 组合数学中的项链计数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


給c種不同顏色寶石能穿成多少種長度為s的寶石項鏈(本質不同)



Burnside定理的應用:

當n為奇數時,有n種翻轉,每種翻轉都是以一個頂點和該頂點對邊的中點對稱。有k^(n/2+1)*n種。

當n為偶數時,有n種翻轉,其中一半是以兩個對應頂點,另一半是以兩條對邊對稱。有k^(n/2+1)*n/2+k^(n/2)*n/2種。

考慮旋轉:枚舉旋轉角度360/n*i,(0<i<=n),也就是一個置換。經過該置換,顏色仍保持不變的著色方案有k^GCD(n,i)種。

?

一個長度為n的環,每i個上同一種顏色,可以上多少種顏色。

假設起點在x,則x,x+i,x+2*i,……,x+k*i,……

假設在第t次,第一次回到起點,則x=(x+t*i)%n => t*i%n=0 => t=LCM(i,n)/i=n*i/GCD(n,i)/i=n/GCD(n,i)。

那么可以上n/t種顏色,即n/(n/GCD(n,i))種,所以旋轉的著色方案有k^GCD(n,i)種。



  • #include<cstdio>
  • #include<iostream>
  • using namespace std;
  • typedef long long ll;
  • ll power(ll a,ll b)
  • {
  • ll ans=1ll;
  • while(b)
  • {
  • if(b&1)
  • ans=ans*a;
  • a=a*a;
  • b=b>>1;
  • }
  • return ans;
  • }
  • ll gcd(ll a,ll b)
  • {
  • return b ? gcd(b,a%b) : a;
  • }
  • int main()
  • {
  • int c,s;
  • ll ans;
  • while(scanf("%d%d",&c,&s)!=EOF)
  • {
  • if(s&1)
  • ans=power(c,s/2+1)*s;
  • else
  • ans=power(c,s/2)*(s/2)+power(c,s/2+1)*(s/2);
  • for(int i=1;i<=s;i++)
  • ans+=power(c,gcd(s,i));
  • printf("%lld\n",(ans/2)/s);
  • }
  • return 0;
  • }



  • 總結

    以上是生活随笔為你收集整理的组合数学中的项链计数的全部內容,希望文章能夠幫你解決所遇到的問題。

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