题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2188
题目大意:n为5-100之间的一个数,代表有多少间牢房,刚开始所有房间打开,第一轮2的倍数的房间(打开的关上,关上的打开),第二轮3的倍数,第四轮4的倍数......n轮,最后有几间牢房打开的 。
解题思路:开灯问题,跟HDU 2053差不多,只要牢房编号是完全平方数,那囚犯就可以逃出去。这里有解释:http://www.cnblogs.com/fu3638/p/7507239.html
sqrt(n)就是n之内(包括n)的完全平方数个数。
代码:
1 #include<cstdio> 2 #include<cmath> 3 4 int main(){ 5 int t; 6 scanf("%d",&t); 7 while(t--){ 8 int x; 9 scanf("%d",&x); 10 int ans=sqrt(x*1.0); 11 printf("%d ",ans); 12 } 13 }