2015年NEUACM一月月赛 J

问题 J: Eliminate zero AC

时间限制: 1 Sec  内存限制: 128 MB
提交: 332  解决: 131
[提交][状态][讨论版]

题目描述

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)

样例输入

5

样例输出

3

提示

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/2+1);
        }
        else
        {
            printf("%d
",n/2);
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/Wing0624/p/4264448.html