50pts求救OvO
查看原帖
50pts求救OvO
821886
songxl123楼主2023/8/14 20:57

代码如下

#include<bits/stdc++.h>
using namespace std;
int main(){
	int t;
	cin>>t;
	int n[t+1],da[t+1];
	long long x[t+1];
	for(int i=1;i<=t;i++){
		cin>>n[i]>>x[i];
	}for(int i=1;i<=t;i++){
		int a[n[i]+1]={0};
		if(n[i]<=2){
			da[i]=x[i];
		}else{
			int fl=x[i];
			while(x[i]%2==0&&x[i]>=2){
				x[i]/=2;
			}if(x[i]==1){
				a[1]=1;a[2]=1;
				for(int j=3;j<=n[i];j++){
					a[j]=a[j-1]*2;
				}while(a[n[i]]<fl){
					x[i]*=2;a[1]=x[i];a[2]=x[i];
					for(int j=3;j<=n[i];j++){
						a[j]=a[j-1]*2;
					}
				}
				da[i]=a[n[i]];
			}else{
				a[1]=a[2]=x[i];
				for(int j=3;j<=n[i];j++){
					a[j]=a[j-1]*2;
				}while(a[n[i]]<fl){
					x[i]*=2;a[1]=x[i];a[2]=x[i];
					for(int j=3;j<=n[i];j++){
						a[j]=a[j-1]*2;
					}
				}
				da[i]=a[n[i]];
			}
		}
    }
    for(int i=1;i<=t;i++){
    	cout<<da[i]<<endl;
	}
	return 0;
}``````

2023/8/14 20:57
加载中...