Informatică, întrebare adresată de atalexandru, 8 ani în urmă

Să se scrie un program care verifică dacă un număr natural citit de la tastatură este pătrat perfect.


In Code::Blocks merge, de ce pe pbinfo iau 60 de puncte cu solutia asta?


#include


using namespace std;


int main()

{ int x;

cin>>x;

bool patrat_perfect;


for(int nr = 1; nr if(nr*nr == x){

cout<<"DA";

patrat_perfect = true;

break;

}

}

if(patrat_perfect == false)

cout<<"NU";


return 0;

}


boiustef: pentru ce folosesti for?
boiustef: nu vedem codul complet, pentru a comenra...
artur99: Ca să-ți dai seama de ce dă un punctaj mai mic, trebuie să vezi ce anume ar putea cauza asta. Dacă deschizi evaluarea problemei (unde vezi scorul la fiecare test), la cele care sunt cu roșu, îți va apărea și motivul, precum: Timp maxim depășit, sau Răspuns greșit.
artur99: Și din asta îți dai seama. Dacă, de exemplu, apare cea cu timpul, înseamnă că au testat acolo cu multe numere sau cu numere mari, și a durat mult prea mult, adică nu e destul de eficient codul, trebuie să mai modifici câte ceva ca să fie mai rapid.
artur99: Dacă apare răspuns greșit, înseamnă că algorimtul nu e făcut să meargă bine pentru anumite cazuri, spre exemplu numere ca 1, 0, 3 sau numere mari, de 8-9 cifre, pentru asta trebuie să verifici foarte atent condițiile (acele intervale 0 < n < 100000) :))
artur99: Ne poți spune ce eroare apare acolo?
atalexandru: I-am dat copy pasta la cod.....nu stiu de ce nu apare tot pe site. Folosesc for pentru a verifica toate numerele dinainte de numarul citit de la tastatura, iar pentru cazul in care nu e patrat perfect fososesc un bool. Imi da acum scor 80, pt ca am initializat bool patrat_parfect cu false la inceput, si eroarea e timp depasit. Dar am vrut sa rezolv problema fara sqrt.
boiustef: poti incerca sa verifici din start paritatea numarului introdus si sa parcurgi numerele din 2 in 2, dar cred tot va da depasire...

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#include <iostream>

#include <cmath>

using namespace std;

int main()

{

   int n, p;

   cin >> n;

   p=sqrt(n);

   if (p*p==n) cout << "da";

   else cout << "nu";

   return 0;

}

Explicație:

Alte întrebări interesante