30/09/2018, 18:16

kiểm tra số nguyên có dạng 2 mũ k hay không?

ai giải thích dùm đi đọc đề là không hiểu lun chứ đừng nói đến làm ai giúp với !!!

Minh Hoàng viết 20:30 ngày 30/09/2018

các số có dạng 2^k
ví dụ 1,2,4,8,16…
Bài này chỉ cần thao tác trên bit thôi
https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2

Dương Nylghara viết 20:19 ngày 30/09/2018
                #include <iostream>
                #include<math.h>
                using namespace std;
                
                int main()
                {
                    int x = 16;
                    /*
                    Ta có log2(2^k) = k <=> mình dung ép
                     kiểu số thực vs số int (nguyên ) nếu mà == thì có 2^k. 
                     Ví dụ float x = 3.000; int x = 3 ; => k
    
                    log(b)/log(c) = logc(b)
                    */
                
                    double k = log10((double)x)/ log10(2.0);
                
                    if(k == (int)k)
                    {
                        cout<<"co dang 2^k"<<endl;
                        cout<<"k = "<<k;
                
                    }
                    else
                    {
                        cout<<"Khong co dang 2^k"<<endl;
                    }
               
        }

dung công thức toán học thôi

trun viết 20:33 ngày 30/09/2018

cám ơn bạn nhiều nhé giờ mình đã hiểu rồi

Bài liên quan
0