首先看看燈的狀態分析:
比如第六盞燈,分別有1,2,3,6個人進來,是關的
第九盞燈,分別有1,3,9個人進來,是開的
第12盞燈,分別有1,2,3,4,6,12人進來,是關的
第16盞燈,分別有1,2,4,8,16人進來,是開的
。。。
可以看到,燈序號有奇數個因數是開的
什麼是有奇數個因數的?
分析一下:比如12,因數都是成對出現的,如1*12,2*6,所以一般因數的個數都是偶數。但特殊情況,如果兩個因數是相同的,則因數個數爲奇數。
但根據1-到n,有多少個完全平方數呢?(int)sqrt(n)個
出錯的地方:int會導致2^32越界,提交出錯
#include<iostream>
#include<math.h>
#include<stdio.h>
using namespace std;
int main()
{
int line;
long long n;
while(cin>>line)
{
for(int i=0;i<line;++i)
{
cin>>n;
printf("%d\n",(int)sqrt(n) );
}
}
return 0;
}