مربع؟

الزمن المحدد: 1 ثانية
الذاكرة المحددة: 256 ميجابايت

أُعطيت عددًا صحيحًا \(N\). حدد ما إذا كان يوجد عدد صحيح \(x\) بحيث \(x^2=N\).

المدخلات

تتكون المدخلات من عدد صحيح واحد \(N\)، حيث \(-10^5 \le N \le 10^5\).

المخرجات

اطبع Yes إذا وُجد مثل هذا العدد \(x\)، وNo خلاف ذلك.

التقييم

في هذه المسألة، تُقيّم كل حالة اختبار بشكل مستقل. درجة الإرسال هي مجموع نقاط جميع حالات الاختبار، ودرجة المسألة هي أعلى درجة إرسال تحققها عبر جميع محاولاتك.

أمثلة

المدخلات

8

المخرجات

No

المدخلات

9

المخرجات

Yes
الحل

لا يمكن أن يكون العدد السالب مربع عدد صحيح. خلاف ذلك، احسب \(x=\lfloor\sqrt N\rfloor\) وتحقق هل \(x^2=N\). التعقيد الزمني والذاكرة \(O(1)\).

#include <cmath>
#include <iostream>
using namespace std;

int main() {
    long long n;
    cin >> n;

    if (n < 0) {
        cout << "No\n";
        return 0;
    }

    long long x = sqrt(n);
    cout << (x * x == n ? "Yes\n" : "No\n");
}