UVA - 10110 Light, more light

来源:互联网 发布:网络投放 编辑:程序博客网 时间:2024/06/01 19:56

2016-08-10

UVA - 10110 Light, more light

题目大意:给 n 盏灯,走 n 趟,第 i 趟只能改变能够整除 i 的灯的状态,问 n 趟后第 n 盏灯是否是亮的。

解题思路:只要考虑第 n 盏灯的改变就行,被改变的次数就是它的因子的个数,因为一开始灯是关闭的,所以一共要改变奇数次才能最终亮起来,即题意为:求一个数的因子是否是奇数个。因子都是成对出现的,既然要奇数个说明有一对因子相等,只算一次.

注意:对于完全平方数以外的数字的因数都是成对的,所以化为判断这个数是否是完全平方数即可。int 太小会 WA。要用long long。

#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main() {long long N;while ( scanf("%lld", &N) && N ) {long long t = sqrt(N);if ( t * t == N )cout << "yes" << endl;elsecout << "no" << endl;}return 0;}


0 0