洛谷—— P1869 愚蠢的組合數

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

題目描述

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

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

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

固然,這個成天都總是用豎式算123456789*987654321=?的人不會讓你那麼讓本身那麼輕鬆,它說:「N和K均可能至關大。」blog

可是狗狗也犯難了,因此它就找到了你,想請你幫他解決這個問題。get

輸入輸出格式

輸入格式:io

 

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

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

 

輸出格式:cli

 

每一組輸入,若是C(N,K)是奇數則輸出1,不然輸出0。sed

 

輸入輸出樣例

輸入樣例#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){;}
相關文章
相關標籤/搜索