题目描述 Description
某监狱里有个很长的走廊,走廊中一个接一个的n个房间。每个房间中锁着一个犯人。一天夜里,狱警决定玩一个无聊游戏。第1轮中,他喝了一口威士忌,然后打开每个房间。第2轮,他喝了一口威士忌,然后按2的倍数遍历每个房间。第3轮,他又喝了一口威士忌,遍历所有3的倍数的房间,以此类推。在遍历中,如果房间是锁着的,则打开;否则锁上。他这样重复n轮,最终醉酒。这时囚犯看到自己房间的锁被打开了,他们立即逃跑。对于有n个房间的走廊,最终会有多少囚犯逃脱?
输入描述 Input Description
仅1行: 一个整数,房间数目n(5≤n≤1000000000)。
输出描述 Output Description
仅1行: 一个整数,逃脱的罪犯数量。
样例输入 Sample Input
100
样例输出 Sample Output
10
数据范围及提示 Data Size & Hint
找规律
解题报告
这道题一看,n<1e9,那么很有可能是有规律可循的(这是数据范围及提示告诉我的)。
为此我先写了一个模拟来打表:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace