通宵教室
Problem:6
Time Limit:1000ms
Memory Limit:65536K
Description
高校扩招,教室一度变得很紧张。学生白天上自习的地方较少,晚上教室又闲置着,怎样才能充分利用教学资源,扩大学生自习时空呢?通宵教室解决学生自习空间有限和教学资源不充分利用的问题。开放通宵教室促进了学生学习观念的转变,以前课堂内外基本上是听老师安排,现在是学生自觉在学习。晚上学习效率高、生理调节能力强的学生已经尝到了甜头。好学、考研、辅修、创作的学生又有了一片新的学习时空。 但是通宵教室对传统的学生管理工作带来了一系列的问题。如果通宵教室的利用率不高的话,将教室的所有灯都打开,还会极大地浪费能源。 现在学校对通宵教室灯光使用做一个新的尝试。假设有N个人使用通宵教室,教室里有N盏灯,每个人和每盏灯都有一个编号。开始所有的灯都没打开,第一个人进教室将所有的灯都打开,第二个人将所有的偶数号的灯都关掉,第三个人对所有3的倍数的灯进行如下操作:如果灯开着,就将它关掉,如果灯关着,就将它打开,……,第i个人对所有i的倍数的灯进行如下操作:如果灯开着,就将它关掉,如果灯关着,就将它打开,重复这样的过程,一直到第N个人完成这样的操作。 现在,教室管理员向你求助,他希望知道,完成这样的过程后,教室里开着的灯还有多少盏?
Input
有多组测试数据。第一行是一个正整数T(1<=T<=10000),表示有多少组测试数据。 以下有T行,每行一个测试数据,包含唯一的一个正整数N(1 <= n < 2^32,)。
Output
对于每个测试数据,输出一行包含唯一的一个整数:表示完成这样的过程后,教室里开着的灯的盏数。
Sample Input
2 1 2
Sample Output
1 1
Hint
Source
nefu<br /><span id="_xhe_temp" width="0" height="0"><br /></span>#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; int main()//平方数被点亮,对n开方取整,便是开灯数; { int t,i,l; long long n; double j,k; while(~scanf("%d",&t)) { for(i=1;i<=t;i++) { scanf("%lld",&n); k=sqrt(n); l=(int)k; printf("%d\n",l); } } return 0; }