不知道为什么 \(Yang Hui\) 会变成 \(Yang Yui\)?就很棒
我们设:
所以,
由于 a,b 数组是 \(p^i\) 前的系数,所以对于任意 i,都有 \(a[i]<p\&\&b[i]<p\)。
又因为 p 是质数,所以无论 \(a[i]!\),\(b[i]!\),\((a[i]-b[i])!\) 都不能被 p 整除,所以 \(C(a[i],b[i])\) 不会被 p 整除。(后面讲反例)
\(a[i]\) 是已知的,而 \(b[i]\) 唯一的范围就是 \(b[i]<=a[i]\),不然结果就是 0。
#include <cstdio>
typedef long long ll;
ll p = 10000, mod;
int read() {
int x = 0, f = 1; char s;
while((s = getchar()) > ‘9‘ || s < ‘0‘) if(s == ‘-‘) f = -1;
while(s <= ‘9‘ && s >= ‘0‘) {
x = (x << 1) + (x << 3) + (s ^ 48);
s = getchar();
}
return x * f;
}
int main() {
int ans, n;
for(int T = 1; ; ++ T) {
mod = read(), n = read();
if(! n && (! mod)) break;
ans = 1;
while(n) {
ans = (ans * (n % mod + 1)) % p;
n /= mod;
}
printf("Case %d: %04d\n", T, ans);
}
return 0;
}
【POJ 3146 & HDU 3304】Interesting Yang Yui Triangle
原文:https://www.cnblogs.com/AWhiteWall/p/12757303.html