Giải phương trình
Xem dạng PDF
Gửi bài giải
Điểm:
15,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
250M
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Output Only, Pascal, PyPy, Python
Cho phương trình có dạng ~ax^2 + bx + c = y~ với ~a, b, c~ là các số tự nhiên.
Cho t phương trình như trên, bạn hãy kiểm tra xem phương trình có nghiệm không âm hay không.
Input Specification
- Dòng đầu ghi số nguyên dương t là số lượng truy vấn
- T dòng tiếp theo, mỗi dòng ghi 4 số tự nhiên ~a, b, c, y~ ~(a, b, c \leq 50, y \leq 10^{18})~
Output Specification
- In ra t dòng, nếu tồn tại số x thì in ra x, còn không in ra "PTVN"
Sample Input
2
2 5 1 19
2 5 18 1
Sample Output
2
PTVN
Bình luận
include <iostream>
using namespace std;
typedef unsigned long long ull;
int main() { int t; cin >> t; while(t--) { ull a, b, c, y; cin >> a >> b >> c >> y; ull left = 0, right = 2000000000; bool found = false; ull ans = 0; while(left <= right) { ull mid = left + (right - left) / 2; int128 val = (int128)a * mid * mid + (__int128)b * mid + c; if(val == y) { found = true; ans = mid; break; } else if(val < y) { left = mid + 1; } else { right = mid -1; } } if(found) cout << ans << "\n"; else cout << "PTVN\n"; } return 0; }