码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2053 Switch Game(开灯问题,完全平方数)

时间:2017-09-11 22:45:23      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:约束   不同的   开灯问题   blog   序号   ace   while   main   有一个   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2053

题目大意:灯开始是关着的,有n盏灯,i从1数到n每当灯的序号是i的倍数的时候就对灯进行一次操作(开->关,关->开),求最后第n盏灯是关着还是开着。

解题思路:直接对第n盏灯模拟也可以,但是有规律更好不是吗~。其实就是判断n的约束奇偶性,奇数就开着,偶数就关着。

     当一个数不是完全平方数:如18约数为:(3,6),(2,19),(1,15)约数个数总会是偶数,因为每个约数都有一个对应的不同的约数。

     当他是完全平方数:如36约数为:(1,36),(2,18),(3,12),(4,9),6 约数个数总是奇数,因为约数sqrt(n)对应的约数是相同的。

代码:

 1 #include<cstdio>
 2 #include<cmath> 
 3 using namespace std;
 4 
 5 int main(){
 6     int n;
 7     while(~scanf("%d",&n)){
 8         int b=sqrt(n*1.0);
 9         if(b*b==n)
10             puts("1");
11         else
12             puts("0");
13     }
14     return 0;
15 }

 

HDU 2053 Switch Game(开灯问题,完全平方数)

标签:约束   不同的   开灯问题   blog   序号   ace   while   main   有一个   

原文地址:http://www.cnblogs.com/fu3638/p/7507239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!