Informatică, întrebare adresată de The12, 9 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