这就是一个等差数列,用到了求和公式n * (1 + n) / 2,我在代码中直接把分母移过去了,好比较。 通过这个来判断n的位置就行了。
#include <iostream>
int main()
{
int t;
std::cin >> t;
while (t--)
{
int n;
std::cin >> n;
int i;
for (i = 1;;++i)
{
if (i * (1 + i) >= 2 * n)
break;
}
if (i == 1)
{
std::cout << "1\n";
continue;
}
else if (i * (1 + i) == 2 * n)
{
std::cout << "0\n";
continue;
}
else if (i * (1 + i) > 2 * n)
{
if ((i - 1) * i + 2 == 2 * n)
std::cout << "1\n";
else
std::cout << "0\n";
}
}
return 0;
}