自己推的,但对求根这里不太清楚,为什么只关注第二个根。AC码:
#include <bits/stdc++.h>
using namespace std;
double gen1 (double a, double b, double c)
{
return (-b + sqrt(b * b - 4 * a * c)) / 2 / a;
}
double gen2 (double a, double b, double c)
{
return (-b - sqrt(b * b - 4 * a * c)) / 2 / a;
}
bool zheng (double x)
{
if (abs(x - (int)x) < 1e-16)
return 1;
else
return 0;
}
int main()
{
double n;
int t;
cin >> t;
while (t--)
{
cin >> n;
int ans_num = 0;
if (n == 1)
cout << "3 4\n";
else
{
for (double i = 3; i <= n; i += 1)
{
if (/*zheng(gen1((i - 2) / 2, (i - 4) / 2, - n)) ||*/zheng(gen2((i - 2) / 2, (i - 4) / 2, - n)))
if (ans_num < 2 || i == 204)
{
ans_num++;
cout << i << " ";
}
if (ans_num > 1)
break;
}
if (!ans_num)
cout << "Poor " << n;
cout << endl;
}
}
return 0;
}
如果把注释部分加入代码就会WA一堆