题解 UVA10110 【Light, more light】

· · 题解

题目谷歌翻译:

每个灯泡都有自己的拨动开关。也就是说,如果按下,灯泡就会打开。

再按一次就会关机。以节省电力消耗

他做了件奇怪的事。如果走廊里有n个灯泡,他就在走廊里来回走动

n次,在第i次行走中,他只切换串行可被i整除的开关。他不按

回到初始位置时的任何开关。第i次步行被定义为沿着走廊走

然后又回来了。现在你得决定最后的结果是什么

最后一个灯泡的状况。是开还是关?

一脸遭逼地读完题目后,我总算明白了:这道题就是想让你判断输入的数是不是完全平方数。。。

所以我们就可以循环暴力搜使用sqrt

高高兴兴打出第一篇代码:

cin>>m;
if((sqrt(m))*(sqrt(m))==m) {
cout<<"Yes\n";
continue;}
cout<<"No\n";
}

咦,Yes怎么和No反了啊……

没事,顺序换一下~~~

咦,0怎么是yes啊

没事,特判~~~

Last Code

#include<bits/stdc++.h>
using namespace std;
long long n,m;//不开long long见祖宗
int main() {
    ios::sync_with_stdio(0);//cin/cout加速
    cin>>n;
    for(register long long i=1; i<=n; ++i) {
        cin>>m;
        if(m==0/*特判0*/||(int)(sqrt(m))*(int)(sqrt(m))==m//(int)取整,因为有可能不是完全平方数; {
            cout<<"No\n";//真金不怕火炼~
            continue;
        }
        //如果没有被continue掉
        cout<<"Yes\n";
    }
    return 0;
}

完结撒世纪末彼岸花❀~