Rezolvare completă PbInfo #1479 pretios

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 Adresa de email.

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!