7 条题解

  • 1
    @ 2024-10-15 21:03:33
    快速幂也能写
    #include <iostream>
    #define ll long long
    using namespace std;
    ll c[1000];
    int main(){
        ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
        c[1] = 1;
        int cnt = 1;
        for(int i = 1 ; i <= 63 ; i++){
            ll x = 2,b = i,ans = 1;
            while(b){
                if(b % 2){
                    ans *= x;
                }
                x *= x;
                b /= 2;
            }
            c[++cnt] = ans;
        }
        int n;
        cin >> n;
        for(int i = 1 ; i <= n ; i++){
            ll x;
            cin >> x;
            int l = 1,r = 63;
            while(l < r){
                int mid = (l + r) / 2;
                if(c[mid] >= x){
                    r = mid;
                }
                else l = mid + 1;
            }
            if(c[l] == x){
                cout << "YES" << '\n';
            }
            else cout << "NO" << '\n';
        }
        return 0;
    }
    

    信息

    ID
    58
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    4501
    已通过
    497
    上传者