Informatică, întrebare adresată de The12, 10 ani în urmă

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

Răspunsuri la întrebare

Răspuns de artur99
61
#include <iostream>
#include <math.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    if((int)sqrt(n)==(float)sqrt(n)){
        cout<<"DA";
    }else{
        cout<<"NU";
    }
    return 0;
}

artur99: cu shortif ;)
The12: mersi ;)
artur99: cp ;)
AntiEaglesDavids: NUUUUUUUUUU, NUUUUUUU FOLOSI SQRTTTTTTT DIN C++ NUUUUUUUUUUUU
artur99: eh na, acu compara liniile de cod ;)
AntiEaglesDavids: PAI E MULT MAI RAPID AL MEEEEEEEEEEEUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
artur99: da' e prea lung codul :D
artur99: si sa fim seriosi :)) cred ca e pbinfo, deci nu se pune problema :D
AntiEaglesDavids: :)))))) ai dreptate cu ultimu comentariu
artur99: ;)
Răspuns de AntiEaglesDavids
24
Varianta mai rapida (prob) si FARA SQRT DIN CMATH

#include <iostream>
using namespace std;

int main()
{
    int n, i, p;

    cin >> n;
    for(p = 1; p * p <= n; p <<= 1);
    p >>= 1;

    if(p * p == n) {
        cout << "DA\n";
        return 0;
    }
    else {
        for(i=p; p; p >>= 1)
            if ((i + p) * (i + p) <= n)
                i += p;
    }

    if(i * i == n) cout << "DA\n";
    else cout << "NU!\n";
    return 0;
}

Alte întrebări interesante