[Beginner Free Contest 31] SQFREE

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
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C++, Pascal, PyPy, Python

Cho một số nguyên dương ~x~ thỏa mãn ~x \ge 2~. Hãy kiểm tra xem tích các ước nguyên tố của ~x~ có nhỏ hơn ~x~ hay không. Trong trường hợp ~x~ chỉ có một ước nguyên tố, ta định nghĩa tích các ước nguyên tố của ~x~ chính là ước nguyên tố duy nhất của ~x~.

Dữ liệu

Gồm một dòng duy nhất chứa một số nguyên dương ~x~ ~(2 \le x \le 10^{18})~

Kết quả

Nếu tích các ước nguyên tố của ~x~ nhỏ hơn ~x~, in YES, ngược lại in NO

Ví dụ

Sample Input 1

2

Sample Output 1

NO

Sample Input 2

3

Sample Output 2

NO

Sample Input 3

100000000000000003

Sample Output 3

NO

Sample Input 4

4

Sample Output 4

YES

Sample Input 5

20000002800000098

Sample Output 5

YES

Giải thích

  • Các số 2, 3, 100000000000000003 là các số nguyên tố. Tích các ước nguyên tố của các số này là chính nó, vì thế đáp án là NO.

  • Phân tích ~4~ ra thừa số nguyên tố, ta có ~4 = 2^2~. Do 2 là ước nguyên tố duy nhất của 4, tích các ước nguyên tố của 4 là 2, và vì ~2 < 4~, đáp án của trường hợp này là YES

  • Ta có ~20000002800000098 = 2 \times (10^8 + 7)^2~. Tích các ước nguyên tố của 20000002800000098 là ~2 \times (10^8 + 7)~ và nhỏ hơn 20000002800000098 nên đáp án của trường hợp này là YES

Chấm điểm

Bộ test của bài này được chia làm hai bộ test con:

  1. 80% số test tương ứng với 40 điểm có ~2 \le x \le 10^7~

  2. 20% số test tương ứng với 10 điểm có ~10^7 < x \le 10^{18}~

Thí sinh nhận được điểm tương ứng với một bộ test con chỉ khi bài làm đưa ra đáp án đúng ở tất cả các test trong bộ test con đó.


Bình luận

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


Không có bình luận tại thời điểm này.