CF-1475A-Odd Divisor
注:
加粗的是收获
题目要求:
判断一个数有无奇数因数
分析:
1.偶数质因数(even prime number)只有2这一个
2.分析因数问题可转化为分析质因数问题
-》只要不是2的幂(power)的数都有奇数质因数(odd prime number)
学习:
判断一个数是为2的幂次的方法,n&(n-1)==0
(因为如果数字是2的幂,则它在二进制表示法中仅包含一个单位,而(n − 1 ) 包含除此单位外的所有位置的单位)
代码:
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
void solve() {
ll n;
cin >> n;
if (n & (n - 1)) {
cout << "YES\n";
} else {
cout << "NO\n";
}
}
int main() {
int t;
cin >> t;
while (t--) {
solve();
}
}

浙公网安备 33010602011771号