B.以贰之名(新生赛)

B.以贰之名
== Description ==
众所周知,DV学长和TYY学长是关系非常好的基友,他们经常以“儿子“互称。有一天DV学长给TYY学长出了一道题,如果TYY学长解出了这道题就可以拥有一半的糖果,否则DV学长将吃掉所有的糖果。TYY学长非常想吃到糖果,你能帮帮她嘛?
具体来说:现在有从2到n这n-1个的数,现在要删除若干个数,使得剩下的数中,一定有一个数能被剩下的数整除,问最少要删除多少个数?
Input
输入只有一个数n,表示有2~n这n-1个数(1<=n<=1e9)。
Output
需要最少删除的数的个数。

Sample Input

5
4
3

Sample Output

2
1
1

Hint
n=5时,有2、3、4、5这四个数,删掉3、5后,才能保证有一个数2能被剩下的数2、4整除
思路
不难发现,x=2 时,删除的数最少。因此贪心选择留下 2,删除所有奇数。

源代码

#include<iostream>   
using namespace std;   
int main()
{  
  int n,a;   
  cin>>n;   
  a = (n-1)/2;//不能被2整除的个数
  cout << a << endl;   
  return 0;   
} 
发布了9 篇原创文章 · 获赞 12 · 访问量 144

猜你喜欢

转载自blog.csdn.net/qq_45949914/article/details/103797181