当前位置:   article > 正文

CodeForces 1076B Divisor Subtraction 思维_you are given an integer number n . the following

you are given an integer number n . the following algorithm is applied to it

http://codeforces.com/problemset/problem/1076/B

You are given an integer number nn. The following algorithm is applied to it:

  1. if n=0, then end algorithm;
  2. find the smallest prime divisor dd of n;
  3. subtract dd from nn and go to step 1.

Determine the number of subtrations the algorithm will make.

Input

The only line contains a single integer nn (2≤n≤10^10).

Output

Print a single integer — the number of subtractions the algorithm will make.

Examples

Input

5

Output

1

Input

4

Output

2

Note

In the first example 5 is the smallest prime divisor, thus it gets subtracted right away to make a 0.

In the second example 2 is the smallest prime divisor at both steps.

题目大意:给你一个大于n的数,进行三步操作:(1)找到这个数的最小的质因子。(只有一个质因子的数就是素数 1没有质因子)(2)令n减去这个质因子。(3)若n=0,退出,否则进行步骤(1)。最后让你输出操作的次数。

思路:每个正整数都能够以唯一的方式表示成它的质因数的乘积。所有的质数都是奇数除了2,那我们先考虑n是偶数的情况:(1)偶数的最小质因子一定是2,偶数减去2仍然是2,因此偶数的操作次数就是n/2。(2)如果n不是偶数,n又能表示成质因数乘积的形式,因此我们可以认为n能表示成奇数乘积的形式,我们可以假设n=a*b,a是n的最小质因子,那么n-a=a*(b-1),因为b是一个奇数,所以b-1就是偶数,即n-a是偶数,那么由(1)知,操作次数为1+(n-a)/2。所以我们把平时写的判断素数的函数改一下:若n是素数,则返回n;若n不是素数,则返回n的最小质因子。这样这道题就很容易了。(其实这样写的话,所有的数都可以统一起来,不必分奇偶)

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<stack>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<queue>
  7. #include<map>
  8. #include<set>
  9. #include<algorithm>
  10. #include<iterator>
  11. #define INF 0x3f3f3f3f
  12. typedef long long ll;
  13. typedef unsigned long long ull;
  14. using namespace std;
  15. ll prime(ll n)
  16. {
  17. if(n==2||n==3)
  18. return n;
  19. for(ll i=2;i*i<=n;i++)
  20. {
  21. if(n%i==0)
  22. return i;
  23. }
  24. return n;
  25. }
  26. int main()
  27. {
  28. ll n;
  29. scanf("%lld",&n);
  30. if(n%2==0) //偶数必定一直减2
  31. printf("%lld\n",n/2);
  32. else
  33. {
  34. n-=prime(n);
  35. printf("%lld\n",1+n/2);
  36. }
  37. return 0;
  38. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/446880
推荐阅读
相关标签
  

闽ICP备14008679号