问题 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; }