PTIT011 - Mật mã!

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Một hôm, điệp viên 2 mang Tài John nhận được một lá thư chứa dữ liệu quan trọng từ tổ chức PROPTIT, anh liền quyết định mang lá thư đó về cho tổ chức TRAINING D19 để giải mã hòng chiếm đoạt được căn cứ của PROPTIT. Tuy nhiên trong lá thư lại chỉ chứa duy nhất một con số ~n~ - không may các chuyên gia D19 lại không thể giải mã nó được.

Bạn hãy thử tài làm chuyên gia giải mã để giúp đỡ các chuyên gia D19 nhé.

Nếu giải mã thành công bạn có thể biết khu vực cổng Tây của PROPTIT có đang sơ hở để tấn công không? Chúc các bạn thành công.

Capture.PNG

Trong lá thư chỉ có duy nhất một số và trước khi bị bắt, Tài John đã nói với D19 rằng:  "PROPTIT rất yêu thích các tam giác cân. Nếu từ ~n~ chấm tròn có thể xếp thành hình tam giác cân với độ dài cạnh ~h \ge 2~ thì có nghĩa là khu vực công Tây đang có sơ hở và ngược lại"

Input

Một dòng duy nhất chứa số ~n~ trong lá thư ~(0 \le n \le 10^{17})~

Output

Nếu cổng Tây đang có sơ hở thì in ra YES, ngược lại in ra NO

Sample

Input #1
6
Output #1
YES

Problem source: CLB Lập Trình PTIT


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -1
    gtmailong  đã bình luận lúc 30, Tháng 4, 2024, 18:15

    đúng 55/56 case ko biết còn trường hợp nào ko

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    using ld = long double;
    
    bool check_integer(ld n) {
        return  ceil(n) == floor(n);
    }
    
    bool tamgiac1(ld n){ 
        ld a = 1,b = 1, c = -2 * n;
        ld delta = b*b - 4*a*c;
        ld x1 = (-b+sqrt(delta))/(2*a);
        return check_integer(x1);
    }
    
    bool tamgiac2(ld n){
        return check_integer(sqrt(n));
    }
    
    int main() {
        ld n;
        cin >> n;
        if (n == 0){
            cout << "NO";
            return 0;
        }
        if (tamgiac2(n) || tamgiac1(n)) cout << "YES";
        else cout << "NO";
        return 0;
    }
    

  • 0
    chinhle  đã bình luận lúc 13, Tháng 2, 2024, 2:43

    vẫn không hiểu sao 16 có thể xếp thành tam giác cân


    • 0
      vudinhlong  đã bình luận lúc 26, Tháng 2, 2024, 15:24

      ---o---

      --ooo--

      -ooooo-

      ooooooo

      Có vẻ là như này bạn ạ ._.


    • 0
      dinhvantung0611  đã bình luận lúc 25, Tháng 2, 2024, 10:50

      1 2 3 4 3 2 1


  • 0
    dinhvantung0611  đã bình luận lúc 3, Tháng 2, 2024, 17:10

    Bạn nào AC có thể nêu ý tưởng đc kh ạ. Mình bí quá, sai 2 test


    • 0
      vudinhlong  đã bình luận lúc 18, Tháng 3, 2024, 14:26

      nó có thể là tam giác cân nếu số n đó là 1 trong 2 TH sau:

      n = 1+2+3+...+x nào đó

      n = 1+3+5+...+y nào đó

      dùng công thức tính tổng dãy số cách đều rồi chuyển về giải ptr bậc 2, tính delta rồi kiểm tra delta có phải số cp hay không (tức là ptr có no ấy) là AC nha bạn!!! (nhớ n < 6 return 0 là được nữa)