CF-1475A-Odd Divisor

注:

加粗的是收获

 

题目要求:

判断一个数有无奇数因数

 

分析:

1.偶数质因数(even prime number)只有2这一个

2.分析因数问题可转化为分析质因数问题

-》只要不是2的幂(power)的数都有奇数质因数(odd prime number)

 

学习:

判断一个数是为2的幂次的方法,n&(n-1)==0

(因为如果数字是2的幂,则它在二进制表示法中仅包含一个单位,而−  包含除此单位外的所有位置的单位

 

代码:

#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();
  }
}

  

posted @ 2021-01-26 17:05  bear_xin  阅读(189)  评论(0)    收藏  举报