👤

#389 pbinfo c++
Cerinţa
Se citesc două numere naturale a și b. Să se determine cel mai mic și cel mai mare număr din intervalul [a,b] cu număr maxim de divizori pari şi numărul maxim de divizori pari.

Date de intrare
Programul citește de la tastatură numerele a b.

Date de ieşire
Programul afișează pe ecran numerele NRD MIN MAX, separate prin exact un spațiu , reprezentând numărul maxim de divizori pari ai numerelor din [a,b], cel mai mic şi respectiv cel mai mare număr din interval cu număr maxim de divizori pari.

Restricţii şi precizări
0 < a < b < 1.000.000.000
b-a ≤ 1000



Exemplu
Intrare

10 20
Ieșire

4 12 20
Explicație
Numărul maxim de divizori pari pentru numerele din intervalul [10,20] este 4. Numerele din interval cu 4 divizori pari sunt 12, 16 şi 20.


Răspuns :

#include<iostream>#include<cmath>int a,b;int nrdiv(int n){    int s=0;    for(int i=1;i*i<n;++i)        if(n%i==0)        {            if(i%2==0)                s++;            if((n/i)%2==0)                s++;        }    if(float(sqrt(n))==int(sqrt(n)) && int(sqrt(n))%2==0)        s++;    return s;}int main(){    std::cin>>a>>b;    int nrd=nrdiv(a);    int minn=a;    int maxx=b;    for(int i=a+1;i<=b;++i)    {        int y;        y=nrdiv(i);        if(y>nrd)        {            nrd=y;            minn=i;            maxx=i;        }        else            if(y==nrd)            {                maxx=i;            }    }    std::cout<<nrd<<' '<<minn<<' '<<maxx;}