【題解】ZeroJudge d111: 10110 – Light, more light

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=d111
【解題想法】

  • 計算第 n 個開關在工友的 n 趟操作中會被切換幾次。
  • 切換次數為 n 的因數個數。
    • n 的因數除了 1 和 n 之外,
    • 若存在其它因數 p,則必有另一因數為 n / p
    • 若 n 為完全平方數,則 p = n / p,因數的數目為奇數個 (電燈亮著)
    • 否則,因數的數目為偶數個 (電燈暗著)
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    long long n;
    while (cin >> n){
        if (n == 0) break;
        int sq = sqrt(n);
        if (sq * sq == n) cout << "yes\n";
        else cout << "no\n";
    }
    return 0;
}
分享本文 Share with friends