打卡信奥刷题(1101)用C++实现信奥 P1869 愚蠢的组合数

P1869 愚蠢的组合数

题目描述

最近老师教了狗狗怎么算组合数,狗狗又想到了一个问题。。。

狗狗定义 C(N,K)C(N,K)C(N,K) 表示从 NNN 个元素中不重复地选取 KKK 个元素的方案数。

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

当然,这个整天都老是用竖式算 123456789×987654321=?123456789 \times 987654321=?123456789×987654321=? 的人不会让你那么让自己那么轻松,它说:“ NNNKKK 都可能相当大”。

但是狗狗也犯难了,所以它就找到了你,想请你帮他解决这个问题。

输入格式

第一行一个正整数 ttt,表示数据的组数。

222 至第 2+t−12+t-12+t1 行,每行有两个非负整数 NNNKKK,描述每组数据。数据保证 k≤nk\le nkn

输出格式

每一组输入,如果 C(N,K)C(N,K)C(N,K) 是奇数则输出 111,否则输出 000

输入输出样例 #1

输入 #1

3
1 1
1 0
2 1

输出 #1

1
1
0

说明/提示

数据范围及约定

对于 100%100\%100% 的数据,1≤n≤1051\le n\le 10^51n1051≤t≤1051\le t\le 10^51t105

C++实现

#include<cstdio>
#include<cctype>
using namespace std;
int read(){
	int abs=0;char c=getchar();
	while(!isdigit(c)) 
		c=getchar();
	while(isdigit(c)) {
		abs=abs*10+c-'0';
		c=getchar();
	}
	return abs;
}//读入优化
int main(){
	int t=read();
	while(t--){
		int n=read(),k=read();
		bool i=1;
		while(n>=2&&i){
			if((!(n&1))&(k&1)) i=0;//x&1==1则x为奇数
			n>>=1;k>>=1;//x>>=1等效于x/=2
		}
		putchar(i?'1':'0');
		putchar('\n');
	}
	return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值