这个题求经过n次开关后,最后第n个灯是亮还是灭。本来想把求n的因数,后来发现,如果n不是开方数,因数为偶数,若是开方数,则因数为奇数,所以这题只需判断n是否为开方数即可。注意n的类型为unsigned 程序代码: #include<iostream> #include<cmath> using namespace std; int main() { unsigned int n, middle; while(cin>>n){ if(!n) break; middle = (int)sqrt(n); if(middle * middle == n) cout<<"yes"<<endl; else cout<<"no"<<endl; } return 0; }