码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷—— P1869 愚蠢的组合数

时间:2017-11-27 23:49:08      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:100%   ref   组合数   main   read   none   class   inline   pre   

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 愚蠢的组合数

标签:100%   ref   组合数   main   read   none   class   inline   pre   

原文地址:http://www.cnblogs.com/Shy-key/p/7906269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!