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