Un număr natural în baza 10
se numește prețios dacă numărul de cifre ale sale din baza 2
este număr prim.
Cerința
Se dă un interval [a,b]
.Determinați câte numere prețioase se află în acest interval.
Date de intrare
Programul citește de la tastatură numerele a
și b
.
Date de ieșire
Programul va afișa pe ecran numărul x
, reprezentând numărul de numere prețioase din intervalul dat.
Restricții și precizări
1 ≤ a,b ≤ 10000000000000000000
Exemplu
Intrare
1 4
Ieșire
3
Explicație
Cele 3
numere prețioase sunt 2 3 4
.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema pretios:
#include <iostream>
#include <cmath>
using namespace std;
bool prim(long long x)
{
long long i;
if(x==0 or x==1)return 0;
for(i=2;i*i<=x;++i)
if(x%i==0)return 0;
return 1;
}
unsigned long long start,stop;
unsigned long long a,b,i,nr,p=1;
int main()
{
cin>>a>>b;
start=log2(a)+1;stop=log2(b);
for(i=1;i<=start;i++)
p*=2;
if(prim(start))
{
nr+=p-a;
}
for(i=start;i<stop;++i)if(prim(i+1)){nr+=p;p*=2;}else p*=2;
if(prim(stop+1))nr+=b-p+1;
cout<<nr<<' ';
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1479 pretios
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1479 pretios de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!