637
技術社區[雲棲]
POJ 3219 二項式係數奇偶性的判定
這題想了很久 因為題裏的給了遞推公式 但是數據範圍太大 用不了遞歸打表的 然後上網發現了
這個 其實還有N!/(K!(N-K)!)分別求出 N! K! (N-K)!中因子2的個數 如果N!中2的因子個數大於
後兩項的和 那麼就是偶數 如果等於就為奇數
判定準則Cn^m(m≤n)的奇偶性取決於m和n—m的二進製表達式中是否存在位於同一數位上的
兩個數碼都是1,如果存在,Cn^m是偶數,否則Cn^m就是奇數.
#include <iostream> #include<cstdio> using namespace std; int main() { int n,k; while(~scanf("%d%d",&n,&k)) printf("%d\n", k&(n-k)?0:1); return 0; }
下麵是我做的
N!/(K!(N-K)!)分別求出 N! K! (N-K)!中因子2的個數 如果N!中2的因子個數大於
後兩項的和 那麼就是偶數 如果等於就為奇數
#include <iostream> #include<cstdio> using namespace std; int main() { int n,k; long long a[35]; a[1]=2; for(int i=2; i<=32; i++) a[i]=2*a[i-1]; while(~scanf("%d%d",&n,&k)) { if(n==k||k==0) { printf("1\n"); continue; } int w=0,b=0,c=0; for(int i=1; i<=32; i++) { w+=n/a[i]; b+=k/a[i]; c+=(n-k)/a[i]; } if(w>b+c) printf("0\n"); else printf("1\n"); } return 0; }
最後更新:2017-04-04 07:03:27