解救迷茫的草滩小王子
描述
彩虹岛上一共会举办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)]个