题解:SP7406 BEENUMS - Beehive Numbers
容易得出:第 \(k\) 层的单元总数公式为:\(1+3k(k−1)\)。所以 \(n=1+3k(k-1)\),解方程得:\(n=\frac{3\pm \sqrt{9-12(n-1)}}{6}\),判断 \(9-12(n-1)\) 是否是完全平方数,并且判断 \(3+\Delta\) 是否为正整数即可。
代码:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
long long N;
for (;;) {
cin >> N;
if (N == -1) return 0;
long long disc = 9 + 12*(N-1);
long long s = sqrt((double)disc);
if (s*s == disc && (3 + s)%6 == 0 && (3+s)/6 >= 1) {
cout << "Y" << endl;
} else {
cout << "N" << endl;
}
}
}

浙公网安备 33010602011771号