THPTTD_93 - Số Nasty
Xem dạng PDF
Gửi bài giải
Điểm:
6,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
bai3.inp
Output:
bai3.out
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, JavaScript, Kotlin, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Bình luận
sao ae làm phức tạp vậy :D
ta có thể làm như sau: với mỗi truy vấn ta duyệt i đến ~\sqrt{x}~ và mỗi lần ~x~ chia hết cho ~i~ thì dùng map lưu lại 2 giá trị ~i~ ~+~ ~\frac{x}{i}~ và ~\frac{x}{i}~ ~-~ ~i~
sau đó check xem trong map có giá trị nào xuất hiện hơn 1 lần là được
Code tham khảo (C++)
include <iostream>
include <vector>
include <cmath>
include <fstream>
using namespace std;
bool ktnasty(int n) { vector<int> u; for (int i = 1; i * i <= n; ++i) { if (n % i == 0) { u.pushback(i); if (i * i != n) u.push_back(n / i); } } int sz = u.size(); for (int i = 0; i < sz; ++i) { for (int j = i + 1; j < sz; ++j) { int a = u[i], b = u[j]; int c = n / a, d = n / b; if (abs(a - b) == (c + d) || abs(a - c) == (b + d) || abs(a - d) == (b + c)) return true; } } return false; }
int main() { ifstream fi("bai3.inp"); ofstream fo("bai3.out"); int n, x; if (!(fi >> n)) return 0; while (n--) { fi >> x; fo << kt_nasty(x) << endl; } fi.close(); fo.close(); return 0; }
Tham khảo
include <iostream>
include <vector>
include <cmath>
include <fstream>
using namespace std;
bool ktnasty(int n) { vector<int> u; for (int i = 1; i * i <= n; ++i) { if (n % i == 0) { u.pushback(i); if (i * i != n) u.push_back(n / i); } } int sz = u.size(); for (int i = 0; i < sz; ++i) { for (int j = i + 1; j < sz; ++j) { int a = u[i], b = u[j]; int c = n / a, d = n / b; if (abs(a - b) == (c + d) || abs(a - c) == (b + d) || abs(a - d) == (b + c)) return true; } } return false; }
int main() { ifstream fi("bai3.inp"); ofstream fo("bai3.out"); int n, x; if (!(fi >> n)) return 0; while (n--) { fi >> x; fo << kt_nasty(x) << endl; } fi.close(); fo.close(); return 0; }
tham khảo nha mn
alooo; sao của mình nó ghi Unexpected EOF in the participant's output chán quá
vài case kì quá, có cái 1 ra 0 cái khác thì đúng hết, k bt sao luôn =(
vector của bạn lưu pair(i, n/i) đi, duyệt for lồng, mỗi cặp tính tổng ra xong so với hiệu của các cặp còn lại