我是靠谱客的博主 动人香水,最近开发中收集的这篇文章主要介绍CF1076B Divisor Subtraction,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目大意:
   输入n,不断将n赋值为n-p(p为n的最小质因数),问减多少次n=0。(2≤n≤1010).

思路:

    偶数的最小质因子为2,并且减之后还一直为2;奇数的最小质因子一定是奇数,相减后变为2

 

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 #include<iostream>
 5 #include<algorithm>
 6 
 7 using namespace std;
 8 
 9 const int  maxn=100000;
10 int pri[maxn+10],prin;
11 long long n;
12 bool shaizi[maxn+10];
13 
14 void init()
15 {
16     memset(shaizi,0,sizeof(shaizi));
17     shaizi[1]=true;
18     for(int i=1;i<=maxn;i++)
19     {
20         if(!shaizi[i])
21         {
22             prin++;
23             pri[prin]=i;
24         }
25         for(int j=1;j<=prin&&i*pri[j]<=maxn;j++)
26         {
27             shaizi[i*pri[j]]=true;
28             if(i%pri[j]==0)break;
29         }
30     }
31 }
32 
33 int main()
34 {
35     cin>>n;
36     if(n==0)
37     {
38         printf("0n");
39         return 0;
40     }
41     if(!n&1)
42     {
43         cout<<n/2<<endl;
44         return 0;
45     }
46     //int s=sqrt(n);
47     init();
48     int f=0;
49     for(int i=1;i<=prin;i++)
50     {
51         if(n%pri[i]==0)
52         {
53             n-=pri[i];
54             f=1;
55             break;
56         }
57     }
58     if(!f)printf("1n");
59     else cout<<n/2+1<<endl;
60     return 0;
61 }

 

转载于:https://www.cnblogs.com/LiqgNonqfu/p/9966948.html

最后

以上就是动人香水为你收集整理的CF1076B Divisor Subtraction的全部内容,希望文章能够帮你解决CF1076B Divisor Subtraction所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部