Đây là đề và bài làm của em.Em có thử và không có vấn đề gì, nhưng khi nộp bài thì sai mất 60% test.Nên lên đây nhờ mọi người xem thử xem em sai chỗ nào.
Ý tưởng của em như này:
- Số Hình CN nhỏ:
(m+1)*(n+1) =m*n+m+n. - Số điểm giao nhau (không tính mép ngoài):
m*n. - Số hạt = Số HCN + Số Điểm giao nhau =
2*m*n+m+n.
Cái này cũng đưa ra mọi người xem xem có vấn đề gì không.
#include <iostream>
#include <cmath>
using namespace std;
int MN() {
int k;
cin >> k;
if (k < 4) { cout << "-1 -1"; return 0; }
else for (int m = sqrt(k); m >= 1; m--) {
for (int n = m; (2 * m * n + m + n + 1) <= (2 * k); n++)
if ((2 * m * n + m + n + 1) == (2 * k)) {
cout << m << " " << n << endl;
return 0;
}
}
cout << "-1 -1" << endl;
return 0;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) MN();
return 0;
}

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?