提高歷練地 其他數學問題

2021-10-02 07:07:54 字數 1340 閱讀 2797

p1641 [scoi2010]生成字串

題目描述

lxhgww最近接到了乙個生成字串的任務,任務需要他把n個1和m個0組成字串,但是任務還要求在組成的字串中,在任意的前k個字元中,1的個數不能少於0的個數。現在lxhgww想要知道滿足要求的字串共有多少個,聰明的程式設計師們,你們能幫助他嗎?

輸入格式

輸入資料是一行,包括2個數字n和m

輸出格式

輸出資料是一行,包括1個數字,表示滿足要求的字串數目,這個數可能會很大,只需輸出這個數除以20100403的餘數

輸入輸出樣例

輸入 #1 複製

2 2輸出 #1 複製

2說明/提示

limitation

每點2秒

對於30%的資料,保證1<=m<=n<=1000

對於100%的資料,保證1<=m<=n<=1000000

費馬小定理

費馬小定理是數論中的乙個定理:假如a是乙個整數,p是乙個質數,那麼a^p-a是p的倍數

如果a不是p的倍數,這個定理也可以寫成

若a與p互質,且p是質數時,a(p-1)≡1 ,並且,a-1也是a的逆元

有:a(p-1)=1=a-1a

a(p-1)=a-1a

a(p-2)=a-1

即:c(n,m)=( n*(n-1)* … * (n-m+1) ) / ( m! )=( n*(n-1)* … * (n-m+1) ) * (m!)(p-2)

= n! * (m! * (n-m)!)20100403

#include

#define max_int ((unsigned)(-1)>>1)

#define min_int (~max_int)

#define pi (4*atan(1.0))

#define ll long long

#define inf 0x3f3f3f3f

#define infmax 0x3f3f3f3f3f3f3f3f

using

namespace std;

intread()

ll mod=

20100403

;ll c

(ll m,ll n)

for(ll i=

1;i<=n;i++

) ll p=mod-2;

while

(p>0)

return

(ans1*ans3)

%mod;

}int

main

(void

)

花園,洛谷之提高歷練地,其他數學問題

前話 聽說學oi的同志們數學都挺好。那麼。就請完成下面的題目證明這一點吧!這裡的題不是一般的難,首先要結合一定的基礎和想象力與聯想力。正題第一題 花園 這一題是我最後才做的,因為題目只給出了乙個環形花圃。主要利用的是乘法原理和加法原理來解決問題。我們用乙個m位的二進位制數來儲存當前的狀態。假如i狀態...

2018 6 18 數學問題

define crt secure no deprecate 求正整數n的質因數的個數。120 2 2 2 3 5 所以最後輸出時5 10 9 n至多只存在乙個大於sqrt n 的素因數 這裡只需要篩選到100000就可以 通過素數表,不斷試除,最後求出各個冪指數的和 include 素數表找到10...

2018 6 18 數學問題

2 4 3 8 2 3 3 對分母n 和分子 a進行因子分解後,找到其對應的冪指數相除結果最小的即為最後結果 對n!分解素因數 計算n 中將有幾個p因子ans 計算n p,有n p個整數可以向n 提供乙個p因子 ans n p 計算n p p 有n p p 個整數可以向n 提供兩個因子,相較於上乙個...