DK05 - Kiểm tra số chính phương

View as PDF

Submit solution


Points: 1.00 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Số chính phương là số tự nhiên mà căn bậc hai của nó là một số tự nhiên. Hoặc nói ngược lại, số chính phương là số bằng bình phương của một số tự nhiên. Nhiệm vụ của bạn là viết chương trình kiểm tra một số nguyên ~n~ nhập vào từ bàn phím có phải là số chính phương hay không?

Input

Số nguyên ~n~ cần kiểm tra có phải số chính phương hay không

Giới hạn

  • ~-10^{12} \le n \le 10^{12}~

Output

Kết quả kiểm tra số chính phương. Nếu số kiểm tra là số chính phương, in ra "YES", ngược lại in ra "NO". Kết quả in ra không có dấu nháy kép

Sample

Input #1
9
Output #1
YES

Comments

Please read the guidelines before commenting.



  • 0
    Winnguyen102  commented on April 6, 2025, 3:48 a.m.

    n=int(input()) if(n<0): print("NO") elif((n**0.5)%1==0): print("YES") else: print("NO")


  • 0
    jackhoa_2  commented on April 4, 2025, 2:42 p.m.

    code tham khao n=int(input()) if n<0: print('NO') else:
    can=int(n*0.5) if cancan==n:

       print('YES')
    

    else: print('NO')


  • 0
    ApplesOfDirt  commented on March 11, 2025, 8:51 a.m.

    lolllllllll


  • -1
    nguyenbaongan  commented on Dec. 21, 2024, 11:04 a.m.

    case 2 là gì v mng


  • -1
    ndanh190215  commented on Dec. 4, 2024, 9:03 a.m.

    khó quá nghi khang ơi làm sao bây giờ?


  • 0
    tngnghi250315  commented on Dec. 4, 2024, 8:57 a.m.

    lam sai quai ha ce oi


  • -10
    dhphuc011016  commented on Nov. 27, 2024, 7:37 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -10
    bdduy140414  commented on Nov. 27, 2024, 7:28 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • 1
    wanghuyuwu  commented on Nov. 14, 2024, 11:12 a.m. edit 2

    :3 Kiểm tra sqrt(n) - int(sqrt(n)) == 0 là ra nè


    • 1
      kietjumper  commented on Nov. 19, 2024, 3:50 p.m.
      if(sqrt(n) - static_cast < long long > (sqrt(n)) == 0 ? cout<< "YES" : cout<< "NO");
      

  • 2
    kietjumper  commented on Oct. 14, 2024, 4:03 p.m. edited

    Mình xin phép đc nêu thuật toán còn code mình comment ở dưới rồi nhé.

    B1: Cho người dùng nhập xuất ~n~ (~n~ để dạng long long tránh tràn số)

    B2: Tạo một biến ~k~ = ~sqrt(n)~ (~k~ để ở dạng long long vì ~n~ là long long thì có thể ~k~ cũng là long long)

    B3: Kiểm tra: if(~k~*~k~ == ~n~) thì ~n~ là số chính phương và ngược lại

    Note: (chú thích để mọi người hiểu rõ hơn về bước làm

    B3: Ban đầu, ta tạo biến ~k~ là lấy phần nguyên căn của ~n~

    Ví dụ: Căn bậc 2 của 8 = 2.82842712 lấy phần nguyên = 2. Kiểm tra: 2*2 không bằng 8 => 8 ko phải ~scp~

    Căn bậc 2 của 9 = 3 lấy phần nguyên = 3. Kiểm tra: 3*3 = 9 => 9 là số chính phương

    Từ đó ta đúc rút đc công thức kiểm tra số chính phương rồi nhé mọi người 😉


    • -12
      sugardaddy  commented on Oct. 25, 2024, 9:41 a.m.

      This comment is hidden due to too much negative feedback. Show it anyway.


  • -4
    super_god  commented on Oct. 8, 2024, 2:35 a.m.

    hello ae


  • -4
    giabao2015  commented on Oct. 6, 2024, 11:21 a.m.

     [](http://) cưussssssssssssssss


  • -9
    sugardaddy  commented on Oct. 25, 2024, 9:42 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -1
    duongktrong123  commented on Oct. 2, 2024, 2:40 a.m.

    mọi ngươi xem em sai đâu với


    • 1
      kietjumper  commented on Oct. 3, 2024, 1:04 p.m.
      Ok em 👍
      

      • -7
        bnbnbn  commented on Dec. 16, 2024, 3:22 a.m.

        This comment is hidden due to too much negative feedback. Show it anyway.


  • 1
    kietjumper  commented on Oct. 4, 2024, 3:42 p.m. edited
    Vấn đề thứ nhất: Bài bạn làm sai cả test, vì yêu cầu n <= 10^12 mà để kiểu dữ liệu là int thì dẫn đến tràn số, cho nên bạn cần sửa lại tất cả thành long long
    
    Vấn đề thứ 2: Đề bài yêu cầu in ra "YES" và "NO" chứ ko phải "Yes" và "No" nên là cần sửa lại
    
    Sửa lại theo 2 vấn để trên thì bài mới AC nhé ^-^
    

  • 2
    minhkhoi25  commented on Aug. 13, 2024, 10:56 a.m.

    Ủa test 5 là gì vậy mọi người cho mình xin với ạ


    • 1
      kietjumper  commented on Oct. 4, 2024, 3:43 p.m.
      Bạn gửi bài làm đi mình sửa cho!
      

  • 2
    kietjumper  commented on Aug. 13, 2024, 1:44 a.m.

    MN nho them cho minh dau "#" vao trc include dau dong nhe!


    • 2
      kietjumper  commented on Aug. 13, 2024, 1:45 a.m.

      Roi nho copy vao thi xoa chu "copy" nhe! -_-


  • 0
    kietjumper  commented on July 31, 2024, 9:16 a.m.

    Check cái phần (sqrt(n) * sqrt(n) == n) thì đừng làm thế này, dễ sai vì sqrt là kiểu double. Tạo một biến k: int k = sqrt(n) //Lúc này thì sqrt(n) là kiểu int vì ta ép kiểu biến. sau đó check: (k * k == n) cout<< "YES"; else cout<< "NO";

    Chúc mọi người làm bài tốt :))


  • 0
    Bao_CVA  commented on June 30, 2024, 8:02 a.m.

    test 4 và 5 là sao


  • 0
    Hwznggg  commented on May 31, 2024, 11:24 a.m.

    cho em hỏi test case số 5 là gì với mọi người


  • 0
    BienLon8888  commented on Jan. 6, 2024, 1:55 p.m.

    Sao tôi lại bị sai test 3


    • 0
      nhuquynh  commented on Jan. 23, 2024, 9:41 a.m.

      chinh lai long long la duoc nha, ban dau minh cung sai nhu ban


  • 0
    Mechamaru  commented on Dec. 20, 2023, 3:08 a.m.

    gui code tap lam hao no ak hung


  • 0
    Konomi  commented on Nov. 22, 2023, 9:53 p.m.

    test 5 là j mọi người nhỉ


  • 2
    camapconnnnn  commented on Nov. 10, 2023, 11:40 a.m.

    ủa test 6 test j vậy mn sao dùng sqrt không ac test 6


  • 2
    taithikgirl  commented on Oct. 28, 2023, 2:28 a.m.

    hao no


  • 2
    taithikgirl  commented on Oct. 28, 2023, 2:28 a.m.

    hao no


  • 0
    hoangnghiahoa  commented on Oct. 26, 2023, 4:07 p.m.

    test 5 là gì vậy mọi người


  • -4
    ngkhacbaolam2809  commented on Aug. 27, 2023, 7:08 a.m.

    long long khỏi bị tràn số


  • 2
    tognoek  commented on Aug. 22, 2023, 4:53 p.m.

    hướng dẫn chỉ có c/c++ nên mình thêm tý bên python3 ạ: math.sqrt sẽ trả về float nên chúng ta sửa là int(math.sqrt()) nha, lỗi mình gặp mình chia sẻ ạ.


  • -2
    changnguyen  commented on Aug. 21, 2023, 12:14 p.m.

    nếu cho n = 2 thì chương trình vẫn chạy sai thôi bạn,thêm điều kiện nữa nếu n = 2 thì in ra YES nhé


    • 0
      hd929  commented on Oct. 31, 2023, 10:43 a.m.

      Hai có phải là số chính phương đâu?


  • 0
    bihy  commented on Aug. 10, 2023, 3:18 p.m.

    nên làm cho người nộp xem test nha, chứ cứ nnay khbt sai ở đâu mà sửa ý admin


  • 0
    vqlong  commented on Aug. 1, 2023, 3:21 p.m.

    làm cách nào cũng không được :(( cuối cùng mình dùng chính code trên trang này để gửi mà vẫn báo sai https://blog.luyencode.net/kiem-tra-so-chinh-phuong/


  • 0
    Thuznguyen  commented on Aug. 19, 2023, 3:22 a.m.

    mik sai ở test 3 thì sao bn :)))


    • 0
      codega  commented on Aug. 19, 2023, 4:23 p.m.

      kiểm tra code xem lưu về long long chưa nhé. giới hạn đến mũ 12 lưu int bị tràn số sai là phải


      • 0
        Thuznguyen  commented on Aug. 22, 2023, 10:03 a.m.

        thanh kiu nha mik bj tràn số thật :))


  • -4
    piecesmeow369  commented on July 5, 2023, 2:14 p.m.

    ủa sao bài này em lại bị false v? rõ ràng là dùng y nguyên code cũ lúc trước accept r nhét vào nma lại bị sai


    • 4
      lek176234  commented on July 8, 2023, 5:15 p.m.

      Giới hạn là 10^12 á bạn, bạn thử chỉnh đoạn đấy xem.