解救迷茫的草滩小王子

解救迷茫的草滩小王子
 

描述

 

  彩虹岛上一共会举办n场纯粹的(CHD−FINAL)比赛,编号为从1∼n的正整数。

  小王子是一个狂热又 纯粹的ACMer,自然要参加每一场。

  万万没想到,比赛规则被邪恶的彩虹岛副主席掌控了。副主席一共会修改n次比赛规则,第i 次修改规则会导致编号为i的正整数倍的比赛性质发生反转。(比赛只有两种性质:纯粹和不纯粹,纯粹的比赛经过反转会变成不纯粹的比赛,不纯粹的比赛经过反转会变成纯粹的比赛)

  小王子很苦恼,没办法改变比赛规则的他只想参加纯粹的比赛。请你告诉他一共能参加多少场比赛。

输入

 

输入第一行为一个整数T(T ≤ 10^{5}105),表示一共有T组测试数据。

接下来有T行,每行有1个整数为n(1 ≤ n ≤ 10^{5}105),表示比赛的总数量

输出

 

对于每组测试数据输出一个整数x,表示草滩小王子能参加的比赛数。

输入样例 1 

2
1
5

输出样例 1

0
3

提示

对于第一组样例,没有小王子能参加的纯粹的比赛。

对于第二组样例,小王子能参加的比赛编号为2,3,5。

来源

2018长安大学acm新生赛

 
 
一开始想的是模拟,TLE
后来想打表或用位想办法模拟减小时间
打表不行,submit有代码长度限制
 
解法:
对于某一个数i,如果它不是完全平方数,那么它的因子一定有偶数个(成对的),否则则有奇数个
前一种情况相当于没变,后一种情况相当于变一次
故[1,n]内没变的即有n-[sqrt(n)]个

猜你喜欢

转载自www.cnblogs.com/spzeno/p/10126050.html