牛客小白月赛103||C题冰冰的异或(二进制)

题目链接

这是一道规律题,跟二进制,2的n次方有关,可以先列出前10个数,1,2,3,4,5,6,7,8,9,10的数字的答案(这里数据量大,很容易出错,需要仔细,慢慢推),如下图所示:

列出表之后,就能更加直观地看出数与数之间的关系。

比如:

2的1次方以上(不包含2的1次方),2的2次方以下(包含2的2次方)的输出都是2的2次方,4。

而2的2次方以上(不包含2的2次方),2的3次方以下(包含2的3次方)的输出都是2的3次方,8。

因此我们可以推出规律就是,2的n-1次方以上(不包含2的n-1次方),2的n次方以下(包含2的n次方)的输出是2的n次方。

由此,我们可以写出以下代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		long long n;
		cin>>n;
		if(n<3){
            cout<<1<<'\n';
            continue;
        }
        long long r=1;
        while(1){
            r*=2;
            if(r>=n){
                cout<<r<<endl;
                break;
            }
        }
	}
	return 0;
} 

这里是红糖,记录我的小白进化史。

希望能帮到你们,创作不易,如果觉得有帮助可以为我点个赞!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值