题解: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;
        }
    }
}

posted @ 2024-10-19 08:54  cly312  阅读(11)  评论(0)    收藏  举报