De ce primesc doar 90 de puncte pe rezolvare?
#1539 - apartenenta
Scrieţi în limbajul C/C++ definiţia completă a subprogramului apartenenta, care primeşte ca argument un număr natural nenul n şi returnează valoarea 1 dacă n aparţine mulţimii H={|x,y,z∈N}, respectiv 0 în caz contrar.
int apartenenta(long long int n)
{ if(n%7!=0){return 1;}
return 0;
}
Răspunsuri la întrebare
Răspuns de
4
Intrebarea mai buna e de ce primesti 90 de puncte pe o rezolvare complet gresita. Probabil majoritatea unit testurilor au avut numere care sunt divizibile la 7.
De ce functia ta e gresita ?
Subprogramul tau verifica daca numarul este divizibil cu 7. Daca este atunci returneaza 0, daca nu este returneaza 1.
Asta ar functiona daca toate numerele prime ar fi 2,3,5 si 7. Dar sunt o infinitate de alte numere prime. Spre exemplu 11,13,17,23, etc.
Daca am avea numarul 66 = 2*3*11 programul tau ar returna adevarat. Dar e clar ca ar trebui sa returneze fals (66 nu apartine multimii H).
Functie corecta (100 puncte):
bool apartenenta(unsigned n) {
while (n % 2 == 0)n /= 2;
while (n % 3 == 0)n /= 3;
while (n % 5 == 0)n /= 5;
if (n == 1) return 1;
else return 0;
}
missfoxy:
Am inteles. Multumesc mult!
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Franceza,
9 ani în urmă