Fiind elev în clasa a IX-a, George, îşi propune să studieze capitolul divizibilitate cât mai bine. Ajungând la numărul de divizori asociat unui număr natural, constată că sunt numere într-un interval dat, cu acelaşi număr de divizori. De exemplu, în intervalul [1, 10], 6, 8 şi 10 au acelaşi număr de divizori, egal cu 4. De asemenea, 4 şi 9 au acelaşi număr de divizori, egal cu 3 etc.
Răspunsuri la întrebare
Răspuns de
3
Sint 99% sigur ca e vorba de problema MaxD de pe pbinfo:
#include <fstream>
using namespace std;
ifstream fin("maxd.in");
ofstream fout("maxd.out");
int NrDiv(int n);
int a,b,Min,nrdiv,contor;
int main()
{
fin >> a >> b;
for(;a<=b;a++)
{
int Max=NrDiv(a);
if(Max>nrdiv)
{
nrdiv=Max;
Min=a;
contor=1;
}
else
if(Max==nrdiv)
contor++;
}
fout << Min << " " << nrdiv << " " << contor;
return 0;
}
int NrDiv(int n)
{
int count=1,k=0;
while(n%2==0)
{
k++;
n/=2;
}
count=k+1;
for(int i=3;i*i<=n;i+=2)
{
k=0;
while(n%i==0)
{
k++;
n/=i;
}
count*=(k+1);
}
if(n>1)
count<<=1;
return count;
}
#include <fstream>
using namespace std;
ifstream fin("maxd.in");
ofstream fout("maxd.out");
int NrDiv(int n);
int a,b,Min,nrdiv,contor;
int main()
{
fin >> a >> b;
for(;a<=b;a++)
{
int Max=NrDiv(a);
if(Max>nrdiv)
{
nrdiv=Max;
Min=a;
contor=1;
}
else
if(Max==nrdiv)
contor++;
}
fout << Min << " " << nrdiv << " " << contor;
return 0;
}
int NrDiv(int n)
{
int count=1,k=0;
while(n%2==0)
{
k++;
n/=2;
}
count=k+1;
for(int i=3;i*i<=n;i+=2)
{
k=0;
while(n%i==0)
{
k++;
n/=i;
}
count*=(k+1);
}
if(n>1)
count<<=1;
return count;
}
stassahul:
In general problema este simpla, doar ca algoritmul cu numarul divizorilor da de cap
Alte întrebări interesante