Last night,Kid submitted a problem for many times but he got many WA,so he is sad.Out of sympathy, his coach gave him a very simple problem so that Kid can solve it quickly. The problem is to select as many numbers as possible range 1 to n so that among these selected number there are no number can be divided exactly by other number. Can you solve it as quick as Kid?
There are multiple cases.
For each case, there is a integer n(1<=n<=10^9)
For each case,just output the answer.(the most numbers you can select)
You can select {2,3,5} or {3,4,5}... but you can’t select {2,3,4,5} because 2|4.
So the answer is 3.
思路:这题由规律。。。n为奇数是最长是n/2+1,偶数时n/2。。。因为为偶数时他前面一半的都可以整除后面的,而奇数需要把他自己也加上去所以要+1.
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
#ifdef CDZSC_OFFLINE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int n,i,j;
while(scanf("%d",&n)!=EOF)
{
if(n%2!=0)
{
printf("%d\n",n/2+1);
}
else
{
printf("%d\n",n/2);
}
}
return 0;
}