2018CHD-ACM新生赛(正式赛)E.解救迷茫的草滩小王子
Description
彩虹岛上一共会举办n场纯粹的(CHD−FINAL)比赛,编号为从1∼n的正整数。小王子是一个狂热又 纯粹的ACMer,自然要参加每一场。 万万没想到,比赛规则被邪恶的彩虹岛副主席掌控了。副主席一共会修改n次比赛规则,第i 次修改规 则会导致编号为i的正整数倍的比赛性质发生反转。(比赛只有两种性质:纯粹和不纯粹,纯粹的比赛经过反 转会变成不纯粹的比赛,不纯粹的比赛经过反转会变成纯粹的比赛) 小王子很苦恼,没办法改变比赛规则的他只想参加纯粹的比赛。请你告诉他一共能参加多少场比赛。
Input
输入第一行为一个整数T(T ≤ 105),表示一共有T组测试数据。 接下来有T行,每行有1个整数为n(1 ≤ n ≤ 105),表示比赛的总数量。
Output
对于每组测试数据输出一个整数x,表示草滩小王子能参加的比赛数。
Sample Input
2 1 5
Sample Output
0 3
Hint
对于第一组样例,没有小王子能参加的纯粹的比赛。 对于第二组样例,小王子能参加的比赛编号为2,3,5。
思路:判断比赛是否纯粹,需要判断该比赛被修改奇数次还是偶数次,若为奇数次,则不纯粹,反之,纯粹。故只需判断该数的因数个数,对于完全平方数,因数个数为奇数个,所以本题为判断闭区间[1,n]中有多少完全平方数,公式为n-√n。
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 #define M 1000005 7 8 using namespace std; 9 int main() 10 { 11 int t; 12 cin >> t; 13 while (t--) 14 { 15 int n; 16 cin >> n; 17 cout << n - (int)sqrt(n) << endl;//注意数据类型的转换 18 } 19 }
————————————————
心里有光,哪儿都美
心里有光,哪儿都美