Loading

HDU 3304 Interesting Yang Yui Triangle 卢卡斯定理

HDU 3304 Interesting Yang Yui Triangle 卢卡斯定理

题意

给出素数\(P\)和正整数\(N\),求杨辉三角的第\(N\)行中不能被\(P\)整除的数有几个。

\[P \leq 1000,N \leq 10^9 \]

分析

卢卡斯定理说明了关于组合数取模

\[\binom{n}{m} = \prod \binom{n_i}{m_i} \pmod p \]

其中\(n_i,m_i\)分别表示\(p\)进制下\(n,m\)的第\(i\)

不难发现\(\binom{m}{m} \equiv 0 \pmod p \iff \exists m_i,m_i > n_i\)

于是只需要对于\(n_i\),统计\(m_i \leq n_i\)\(m_i\)恰有\(n_i + 1\)种选择

\[ans = \prod (n_i + 1) \]

代码

int main(){
	int kase = 1;
	int P,N;
	while(scanf("%d%d",&P,&N)) {
		if(!P && !N) break;
		int ans = 1;
		while(N){
			int tmp = N % P;
			ans = (ll)ans * (tmp + 1) % 10000;
			N /= P;
		}
		printf("Case %d: %04d\n",kase++,ans);
	}
}
posted @ 2021-11-02 15:52  MQFLLY  阅读(63)  评论(0编辑  收藏  举报