算法学习之路|牢房问题

在监狱里有n间牢房,一开始每个牢房门都是关着的,每间房里有一个囚犯。监狱长每次先喝一杯威士忌,然后下去打开或关闭一部分牢房的门。第一次把每扇门都打开,第二次改变第2,4,6…扇门的状态,第三次改变第3,6,9,…扇门的状态,以此类推,持续n轮。
给出牢房的数量,求多少囚犯可以逃走。
输入格式
输入有多组数据,第一行一个数t,表示t组数据,接下来t行,每行一个数n

输出格式
每组数据,打印一个数,表示能逃走的人数量
输入样例:
2
5
100
输出样例:

2
10

本题是模拟题,代码也是模拟的思路,不过可以总结规律,用数论思想,推出最终结果一定是完全平方数的个数。(n开根号即可)

#include
int main()
{
    int x,n,i,j,k,num=0;
    int a[200],b[200];
    scanf("%d",&x);
    for(i=0;i

你可能感兴趣的:(算法学习之路|牢房问题)