虽是水题,想法很重要
想法:
给定一个正整数 n,如果 n 有大于 1 的奇因数,输出YES,否则输出NO。
我们最先想到能一直除以 2,如果余数为 1,那么输出 NO,否则输出 YES。
还要注意一点 n 的范围是 10 的 14 次方,int 的范围最大大约是 10 的 11 次方,所以要用 long long。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int t;
cin>>t;
while(t--){
ll n;
cin>>n;
//除以2要是等于1的话就是没有奇因数
while(n>1){
n=n/2;
}
if(n==1){
cout<<"NO"<<endl;
}else cout<<"YES"<<endl;
}
return 0;
}