費馬小定理 組合數 hdu 4704

2021-10-08 03:54:27 字數 1238 閱讀 4761

求解s(k): 將整數m拆分為n個數字的有序拆分方案數為c(m-1,n-1)

隔板法理解:

把n分成乙份的分法數為c(0,n-1), 

把n分成兩份的分法數為c(1,n-1),

把n分成三份的分法數為c(2,n-1),

.... ,

把n分成n份的分法數為c(n-1,n-1)。

s(1)+s(2)+…+s(n) = c(0,n-1)+c(1,n-2)+…+c(n-1,n-1) = 2^n-1

由此求解2^n-1

由於n上限非常大,可以用費馬小定理(若a,p互質,a^(p-1)%p=1)化簡。

可以把n-1分解成t個p-1,剩餘m,則2^(n-1)%mod可化為 2^m%mod

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#if __cplusplus >= 201103l

#include

#include

#endif

#define ll long long

#define int long long

using

namespace std;

const

int inf =

0x3f3f3f3f

;const

int mod =

1e9+7;

intquick_pow

(int a,

int b)

a=(a*a)

%mod;

b>>=1;

}return res;

}signed

main()

// res=(res-1+mod-1)%(mod-1);

// coutquick_pow(2

,res-1)

<}return0;

}

hdu 4704 Sum(費馬小定理)

題意 求乙個正整數n拆分成1到n個正整數的和,有多少種拆法 3 2 1和3 1 2算2種不同的拆法 1 n 10 100000 數學不太行呀,還好隊友給力 題意轉換為求2 n 1 不過n好大 由費馬小定理,得2 10 9 6 10 9 7 1 2 0,設mod 10 9 7,則2 n 1 mod 2...

hdu 4704 sum(費馬小定理)

題意 給你乙個數n,求1 n之間的 x可以劃分不超過k個整數的和 的種類 的和 例如 n 4 s 1 3,s 2 5 通過前幾組資料 1 2 3 4 5 6 1 2 4 8 16 32 可以發現答案就是2 n 1 1000000007 2 n 1 1000000007 2 n 1 100000000...

HDU 4704 Sum 費馬小定理 快速冪

題意 把n分成若干個數相加有幾種分法。1 把n分成若干個數 類似排列組合問題,把n個數分成若干個數,在n個數中間插板,有n 1個空位,一共2 n 1 種分法 2 降冪 題目中最後mod 10 9 7 10 9 7是素數。與費馬小定理相聯絡 前提 m是質數 化簡 費馬小引理 所以 3 還需要用到快速模...