Kemarin saat bermain dengan anak saya, saya perhatikan nomor di kereta mainannya:
Jadi kita memiliki
Jadi tantangan sederhana: diberi angka non-negatif sebagai input, kembalikan nilai kebenaran dan falsey yang konsisten yang mewakili apakah representasi string dari angka (di basis 10 dan tanpa nol di depan) dapat entah bagaimana dipecah menjadi angka yang merupakan kekuatan 2 .
Contoh:
4281 truthy (4-2-8-1)
164 truthy (16-4 or 1-64)
8192 truthy (the number itself is a power of 2)
81024 truthy (8-1024 or 8-1-02-4)
101 truthy (1-01)
0 falsey (0 cannot be represented as 2^x for any x)
1 truthy
3 falsey
234789 falsey
256323 falsey (we have 256 and 32 but then 3)
8132 truthy (8-1-32)
Tests for very large numbers (not really necessary to be handled by your code):
81024256641116 truthy (8-1024-256-64-1-1-16)
64512819237913 falsey
Ini adalah kode-golf , jadi semoga kode terpendek untuk setiap bahasa menang!
101
(salah karena 0) ... atau apakah ini masih benar ( 1 - 01
)?
101
kasus ini dengan jawaban saat ini dan semuanya kembali true
, karena dapat dibagi menjadi 1-01
dua kekuatan 2, jadi saya akan menganggap kasus itu benar.
log2(n)
tidak mengandung angka desimal setelah koma. 2) Periksa apakah n AND (n-1) == 0
. 3) Buat daftar nr-square dan periksa apakah n
ada dalam daftar itu.
int
tipe standar (4 byte), tetapi sebenarnya saya tidak keberatan jika kode Anda tidak mendukung angka yang sangat besar. Cukup nyatakan dalam jawaban Anda keterbatasan kode Anda.