/*hdu 3304 Interesting Yang Yui Triangle 題意: 給出P,N,問第N行的斐波那契數模P不等於0的有多少個? 限制: P < 1000,N <= 10^9 思路: lucas定理, 如果: n = a[k]*p^k + a[k-1]*p^(k-1) + ... + a[1]*p + a[0] m = b[k]*p^k + b[k-1]*p^(k-1) + ... + b[1]*p + b[0] 則: C(n,m) = pe(i=0~k,C(a[i],b[i]))%p 其中pe表示連乘符號。 由於n已經確定,所以a[i] (0 <= i <= k)已經確定,所以我們只需要找出每個a[i]有多少種b[i],使得C(a[i],b[i])%P!=0,暴力一遍就可以了。 */ #include#include using namespace std; #define LL long long const int MOD=10000; const int N=105; int a[N]; int cnt=0; int ny[N]; LL inv(LL a,LL m){ LL p=1,q=0,b=m,c,d; while(b>0){ c=a/b; d=a; a=b; b=d%b; d=p; p=q; q=d-c*q; } return p<0?p+m:p; } void predo(int p){ ny[0]=1; for(int i=1;i