1. 程式人生 > >組合數學中的項鍊計數

組合數學中的項鍊計數

給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;
}


相關推薦

組合數學項鍊計數

給c種不同顏色寶石能穿成多少種長度為s的寶石項鍊(本質不同) Burnside定理的應用: 當n為奇數時,有n種翻轉,每種翻轉都是以一個頂點和該頂點對邊的中點對稱。有k^(n/2+1)*n種。 當n為偶數時,有n種翻轉,其中一半是以兩個對應頂點,另一半是以兩條

組合數學排列組合一點理解

安排 一點 能夠 乘法 向上取整 解決 多少 排列 nbsp 在數學中,什麽是排列組合呢?其實在生活中我相信使用是非常廣泛的,下面做一個簡單闡述 集合中不同元素的排列,是對這些元素一種安排.我們也對集合中某些元素的有序安排感興趣.對一個集合中r個元素的有序安排稱為r排列

組合數學之Polya計數

rmi IT clu over any color div 題目 ive 1116: Let it Bead Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: 7

2018黑龍江省賽 A Path Plan(組合數學 美妙的計數原理)

7217: A Path Plan 時間限制: 1 Sec  記憶體限制: 128 MB 提交: 66  解決: 31 [提交] [狀態] [討論版] [命題人:admin] 題目描述 WNJXYK hates Destinys so that he does no

java實現從M個元素取N個元素的所有組合(數學組合問題)

package reverse; public class Cat {public static void main(String[] args) {int[] s = {4, 2, 1, 3, 0, 5};String tmp = "";for(int i=1;i<

組合數學那些有趣的球和盒子的問題(超強悶騷版,再也不怕球球了)

介紹一下問題: n個球放到m個盒子裡,則球和盒子是否有區別?是否允許空盒? 這自然有23=8種狀態,用表格表示方案情況如下: 第一種情況的解釋:(n個無區別的球放進m個無區別的盒子中,允許空盒) 第二種情況的解釋:(n個無區別的球放進m個無區別的盒子中,不允

組合數學+lucas定理+逆元 BZOJ2111 [ZJOI2010]Perm 排列計數

can clas str void script space rip esc magic 2111: [ZJOI2010]Perm 排列計數 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2118 Solved: 563

組合數學及其應用——polya計數

固定 更多 符號 .com 過程 嘗試 容易 高中 立方體 在處理類似下面的問題中,一般的計數方法會出現問題:假如你要用紅、藍兩種顏色給一個正四面體的四個頂點著色,試問存在多少種不同的著色方案? 在高中我們常用的方法是模擬塗色過程,分情況討論,然後基於分步乘法原理

bzoj 4517: [Sdoi2016]排列計數【容斥原理+組合數學

沒有 原理 getchar() display del d+ getchar esp const 第一個一眼就A的容斥題! 這個顯然是容斥的經典問題------錯排,首先考慮沒有固定的情況,設\( D_n \)為\( n \)個數字的錯排方案數。 \[ D_n=n!-\su

[SDOI2016] 排列計數 (組合數學)

... sin name splay 兩個 solution .cn define getchar() [SDOI2016]排列計數 題目描述 求有多少種長度為 n 的序列 A,滿足以下條件: 1 ~ n 這 n 個數在序列中各出現了一次 若第 i 個數 A[i] 的值為

組合數學+錯排問題【p4071】[SDOI2016]排列計數

列數 out input while tro 理解 mod void script Description 求有多少種長度為 n 的序列 A,滿足以下條件: 1 ~ n 這 n 個數在序列中各出現了一次 若第 i 個數 A[i] 的值為 i,則稱 i 是穩定的。序列恰好有

bzoj 4693 雪送溫暖 - 組合數學 - 盧卡斯定理 - 數位dp

題解: 考慮本質上是在對超矩形的每個點求從(1,1,…,1)走到這個點的方案數的奇偶性之和。 到 ( x

【普呂弗編碼 + 組合數學】bzoj 1211: [HNOI2004]樹的計數

1211: [HNOI2004]樹的計數 Description 一個有n個結點的樹,設它的結點分別為v1, v2, …, vn,已知第i個結點vi的度數為di,問滿足這樣的條件的不同的樹有多少棵。給定n,d1, d2, …, dn,程式設計需要輸出滿足d(vi)=di的樹的個數。

BZOJ4517:[SDOI2016]排列計數(組合數學,錯排公式)

++i color name 組合數 int sdoi for tput urn Description 求有多少種長度為 n 的序列 A,滿足以下條件: 1 ~ n 這 n 個數在序列中各出現了一次 若第 i 個數 A[i] 的值為 i,則稱 i 是穩定的。序列

【BZOJ 1211】HNOI2004]樹的計數(組合數學+Purfer序列)

1211: [HNOI2004]樹的計數 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3149 Solved: 1181 [Submit][Status][Discuss] Description 一個有n

牛客國慶集訓派對Day4 I-連通塊計數(思維,組合數學

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 1048576K,其他語言2097152K 64bit IO Format: %lld 題目描述 小 A 有一棵長的很奇怪的樹,他

2018.10.25 atcoder Leftmost Ball(計數dp+組合數學

傳送門 dp妙題啊。 我認為DZYODZYODZYO已經說的很好了。 強制規定球的排序方式。 然後就變成了一個求拓撲序數量的問題。 程式碼: #include<bits/stdc++.h>

BZOJ2839:集合計數(容斥,組合數學)

Description 一個有N個元素的集合有2^N個不同子集(包含空集),現在要在這2^N個集合中取出若干集合(至少一個),使得它們的交集的元素個數為K,求取法的方案數,答案模1000000007。(是質數喔~) Input 一行兩個整數N,K

UOJ#273. 【清華集訓2016】你的生命已如風殘燭(組合數學

傳送門 題解: 首先所有位置先-1,然後考慮m!m!m!種排列,如果全部字尾和小等於0(字首和大等於0)那麼是個合法排列,否則不合法。 這個時候有個自然的想法就是把小於0的最小的位置(若有多個則選最靠後

ACM的【數學知識】之【組合數學】(一) Polya定理的簡單理解 POJ 1286

因為數學渣,Polya定理不是很清楚,但其實際操作大概如下。 解釋下上圖。 N個位置,K種顏色放置。 x1,x2,x3,x4,……,xn (x1,x2,x3……xn)∈{1 2 3 4 …… K} 則 放置總數為上圖 |G| 是【所有的(被定義的)置換(也就是變化的方式)