Răspuns :
Nu are sens parcurgerea tuturor numerelor de la a la b, findca daca x e multiplu pentru y atunci urmatorul multiplu al lui y va fi x+y
deci va fi o varianta mai optimizata de a scri functia astfel
int multipli(int a, int b, int c)
{
int i,nr=0;
for (i=a; i<=b; )
if (i % c !=0) i++; else break;
for (int j=i; j<=b; j+=c)
nr++;
return nr;
}
De asemenea, se poate de atras atentia ca nr de multipli e proportional cu diferenta dintre limita de dreapta a intervalului si cea de stanga
de unde obtinem formula pentru numarul de multipli (il voi nota cu nr) e
nr=(b-a)/c
insa sunt unele exceptii daca unul sau ambele capete ale intervalului il devid pe c, raspunsul corect va fi cu 1 mai mult
deci obtinem functia
int multipli(int a, int b, int c)
{
int nr=b/c-a/c;
if (b % c == 0 || a % c == 0) nr ++;
return nr;
}
Mai sus scriam ca formula trebuie sa fie (a-b)/c, insa in functie am folosit b/c-a/c, cred ca e magie sau eu m-am gresit la calcule, am dat functiei mai multe teste, nu am gasit nici un raspuns gresit
deci va fi o varianta mai optimizata de a scri functia astfel
int multipli(int a, int b, int c)
{
int i,nr=0;
for (i=a; i<=b; )
if (i % c !=0) i++; else break;
for (int j=i; j<=b; j+=c)
nr++;
return nr;
}
De asemenea, se poate de atras atentia ca nr de multipli e proportional cu diferenta dintre limita de dreapta a intervalului si cea de stanga
de unde obtinem formula pentru numarul de multipli (il voi nota cu nr) e
nr=(b-a)/c
insa sunt unele exceptii daca unul sau ambele capete ale intervalului il devid pe c, raspunsul corect va fi cu 1 mai mult
deci obtinem functia
int multipli(int a, int b, int c)
{
int nr=b/c-a/c;
if (b % c == 0 || a % c == 0) nr ++;
return nr;
}
Mai sus scriam ca formula trebuie sa fie (a-b)/c, insa in functie am folosit b/c-a/c, cred ca e magie sau eu m-am gresit la calcule, am dat functiei mai multe teste, nu am gasit nici un raspuns gresit
int multipli(int a, int b, int c)
{
int nr = b / c - a / c;
if(a % c == 0) nr ++;
return nr;
}
{
int nr = b / c - a / c;
if(a % c == 0) nr ++;
return nr;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Ne dorim ca informațiile furnizate să vă fi fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Revenirea dumneavoastră ne bucură, iar pentru acces rapid, adăugați-ne la favorite!