洛谷—— P1869 愚蠢的组合数
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。
输入输出样例
说明
数据范围
对于30% 的数据,n<=10^2 t<=10^4
对于50% 的数据,n<=10^3 t<=10^5
对于100%的数据,n<=10^8 t<=10^5
打表找规律
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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){;}
——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。