这是一道规律题,跟二进制,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;
}
这里是红糖,记录我的小白进化史。
希望能帮到你们,创作不易,如果觉得有帮助可以为我点个赞!!