Lista de probleme 2

Etichete

#2896 binar1

Pentru a converti un număr din zecimal în binar îl vom împărți la 2 în mod repetat, până ce obținem câtul zero. Apoi vom colecta resturile obținute de la ultimul către primul. Aceste resturi sunt cifrele din reprezentarea binară a numărului dat, de la stânga la dreapta. De exemplu, 13(10) = 1101(2).
Scrieți un program care, pentru un șir dat de n numere naturale, rezolvă următoarele cerințe:
1) Determină cel mai mare dintre cele n numere date ce are număr maxim de valori de 1 în reprezentarea binară.
2) Determină cea mai lungă secvență de numere care au număr egal de valori de 1 în reprezentarea binară. Dacă sunt mai multe astfel de secvențe de lungime maximă, se va alege cea mai din stânga. O secvență este un subșir de numere care apar pe poziții consecutive în șirul inițial.

Se consideră un șir format din n numere naturale. Asupra numerelor din șir se face următoarea prelucrare: fiecare valoare este înlocuită cu cel mai mare divizor prim al său. În noul șir se formează secvențe de numere care încep și se termină cu aceeași valoare, numite secvențe neuniforme. Cunoscând numerele naturale n și c, și un șir de n numere naturale, se cere să se rezolve următoarele cerințe:
1. dacă c = 1, atunci se cere să se afișeze lungimea maximă a unei secvențe neuniforme.
2. dacă c = 2, atunci se cere să se afișeze numărul total de secvențe neuniforme din șir.