hdoj2053(switch game

#include <stdio.h>
#include <math.h>
int main()
{
    int n;

    while(scanf("%d",&n)!=EOF)
    {
        int ans1;
        double ans2;
        ans1=sqrt(n);
        ans2=sqrt(n);
        if(ans1==ans2)
        {
            printf("1\n");
        }
        else
            printf("0\n");
    }
    return 0;
}
已AC;

如果定義一個數組來代表燈,然後兩輪循環,因爲n<10^5所以後面可能會超時。還是直接判斷好
這題就是那個什麼拍燈問題。。。每輪拍一次燈,第n次拍n的倍數的燈,剛開始燈全滅,基本就是一樣,最後能亮的只有編號爲完全平方數的燈,所以只要判斷n是否爲完全平方數就可以。
爲什麼是完全平方數纔行呢。。。因爲很明顯一個燈要被按奇數次才能亮,也就是編號的約數包括1和本身有奇數個,而如果不是完全平方數的話肯定就是一對一對的約數吧。。。所以只有編號爲完全平方數纔有奇數個約數,纔會亮到最後


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章