1. 程式人生 > >洛谷—— P1869 愚蠢的組合數

洛谷—— P1869 愚蠢的組合數

cli -c tps 重復 找規律 int bad open targe

https://www.luogu.org/problemnew/show/1869

題目描述

最近老師教了狗狗怎麽算組合數,狗狗又想到了一個問題。。。

狗狗定義C(N,K)表示從N個元素中不重復地選取K個元素的方案數。

狗狗想知道的是C(N,K)的奇偶性。

當然,這個整天都老是用豎式算123456789*987654321=?的人不會讓你那麽讓自己那麽輕松,它說:“N和K都可能相當大。”

但是狗狗也犯難了,所以它就找到了你,想請你幫他解決這個問題。

輸入輸出格式

輸入格式:

第1行:一個正整數t,表示數據的組數。

第2~2+t-1行:兩個非負整數N和K。(保證k<=n)

輸出格式:

每一組輸入,如果C(N,K)是奇數則輸出1,否則輸出0。

輸入輸出樣例

輸入樣例#1: 復制
3
1 1
1 0
2 1
輸出樣例#1: 復制
1
1
0

說明

數據範圍

對於30% 的數據,n<=10^2 t<=10^4

對於50% 的數據,n<=10^3 t<=10^5

對於100%的數據,n<=10^8 t<=10^5

打表找規律

技術分享圖片
 1 #include <cstdio>
 2 
 3 const int N(100);
 4 int C[233][223];
5 6 int main() 7 { 8 freopen("out.txt","w",stdout); 9 for(int i=0; i<=N; ++i) 10 { 11 C[i][i]=C[i][0]=1; 12 for(int j=1; j<i; ++j) 13 C[i][j]=C[i-1][j-1]+C[i-1][j]; 14 } 15 for(int i=0; i<=100; ++i) 16 { 17 for(int j=0; j<=i; ++j)
18 { 19 //if(i&j) printf("%d %d--",i,j); 20 if((i&j)==j) printf("%d %d 1\n",i,j); 21 if(C[i][j]&1) printf("%d %d\n",i,j); 22 } 23 // printf("%d--%d : %d \n",i,j,C[i][j]&1); 24 puts(""); 25 } 26 return 0; 27 }
 1 #include <cstdio>
 2 
 3 inline void read(int &x)
 4 {
 5     x=0; register char ch=getchar();
 6     for(; ch>9||ch<0; ) ch=getchar();
 7     for(; ch>=0&&ch<=9; ch=getchar()) x=x*10+ch-0;
 8 }
 9 
10 int Presist()
11 {
12     int t; read(t);
13     for(int n,m; t--; )
14         read(n),read(m),
15         printf("%d\n",((n&m)==m));
16     return 0;
17 }
18 
19 int Aptal=Presist();
20 int main(int argc,char**argv){;}

洛谷—— P1869 愚蠢的組合數