Objectiu del problema: donat un enter n determinar si es poden reordenar els seus dígits per formar una potència de 2 sense generar un número amb zeros a l'esquerra.
Exemples pràctics: n = 1 és vàlid perquè 1 = 2^0 i n = 10 no és vàlid perquè les xifres 1 i 0 no poden formar una potència de 2 sense zeros inicials.
Idea clau: les potències de 2 mostren combinacions de dígits concretes. En lloc de generar totes les permutacions de n, es compara la freqüència de dígits de n amb la freqüència de dígits de cada potència de 2. Dos números són permutacions entre si si i només si tenen la mateixa quantitat de cada dígit.
Representació de freqüències: construir un vector de deu posicions per als dígits 0 a 9 i omplir-lo amb les aparicions de cada dígit. Com a clau única es pot transformar aquest vector en una cadena o en una tupla. Per exemple el número 128 produeix el comptador amb 1 a la posició 1, 1 a la posició 2 i 1 a la posició 8.
Estratègia pràctica: precomputar les representacions de freqüència de totes les potències de 2 des de 2^0 fins a 2^30 (2^30 cobreix el rang d'enters típics de 32 bits). Calcular la representació de n i comparar-la amb les de les potències de 2. Si alguna coincideix, la reordenació és possible.
Algorisme pas a pas: 1) implementar una funció comptador que recorri els dígits d'un número i actualitzi un array de 10 comptadors; 2) convertir aquest array en una clau comparable (cadena o tupla); 3) calcular la clau de n; 4) per a i des de 0 fins a 30 calcular la clau de 1 << i i comparar-la amb la clau de n; 5) retornar veritable si hi ha coincidència, fals en cas contrari.
Versió descriptiva en C++: implementar counter(int x) que retorni un enter codificat o una cadena representant les freqüències; en reorderedPowerOf2 calcular count = counter(n) i per a i = 0 a 30 comprovar si counter(1 << i) == count i retornar true en aquest cas, si no retornar false.
Versió descriptiva en JavaScript: definir counter(num) com un array de mida 10 inicialitzat a zeros, convertir num a cadena i acumular cada dígit incrementant l'array, retornar array join com a clau; després comparar contra counter(1 << i) per a i en 0..30.
Versió descriptiva en Python: definir counter(x) que construeixi una llista de 10 zeros i mentre x > 0 incrementar count[x % 10] i fer x //= 10, retornar tuple(count); comparar tuple de n amb tuple de 1 << i per a i en range(30).
Complexitat temporal i espacial: temps O(1) en la pràctica perquè només es proven 31 potències de 2 i cada comptador processa com a màxim el nombre de dígits de n (constant acotada), espai O(1) per al vector de 10 comptadors.
Observacions finals: el problema és de reconeixement de patrons mitjançant comptatge de dígits, no de generació de permutacions. La codificació compacta de freqüències evita l'explosió combinatòria i és eficient i robusta per a enters grans dins de rangs habituals.
Sobre Q2BSTUDIO: Q2BSTUDIO és una empresa de desenvolupament de programari a mida especialitzada en aplicacions a mida i programari a mida per a empreses de totes les mides. Som especialistes en intel·ligència artificial i IA per a empreses, desenvolupant agents IA personalitzats i solucions d'intel·ligència artificial aplicada. També oferim serveis de ciberseguretat, serveis cloud AWS i Azure, serveis d'intel·ligència de negoci i solucions amb Power BI. Si busca consultoria en intel·ligència de negoci, integració d'agents IA, o aplicacions a mida segures al cloud, Q2BSTUDIO combina experiència en desenvolupament, seguretat i arquitectures escalables.
Per què triar-nos: experiència en projectes de programari a mida, enfocament en intel·ligència artificial i ciberseguretat, capacitat per desplegar en serveis cloud AWS i Azure, i integració amb eines de business intelligence com Power BI. Oferim solucions d'IA per a empreses que inclouen agents IA conversacionals, anàlisi avançada i pipelines de dades per a intel·ligència de negoci.
Contacte i serveis: treballem en desenvolupament d'aplicacions a mida, consultoria de programari a mida, implantació de solucions d'intel·ligència artificial, hardening i auditoria de ciberseguretat, migracions i desplegaments en serveis cloud AWS i Azure, i projectes d'intel·ligència de negoci amb Power BI. A Q2BSTUDIO convertim idees en productes digitals segurs, escalables i optimitzats per al negoci.





