• Taxes-cf 哥德巴赫猜想


    传送门:https://codeforces.ml/problemset/problem/735/D

    题意:

      当你的收入是x时,你要交x最大的因子(除了x)的数额的税,现在你有一个数字n,试图把n分成几部分收入,每一部分都要交税,试图让总税收最小。

    科普:

      哥德巴赫猜想——任一大于2的偶数都可写成两个素数之和,任一大于5的奇数都可写成三个质数之和。(未证明,但在已知的数字是满足的例如1e18以内)

      弱哥德巴赫猜想——任何一个大于7的奇数都能被表示成三个奇质数的和。(已证明)

      把命题——任一充分大的偶数都可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b"

    思路:

      当收入x为质数的时候税金最少,为1,所以我们直接看x是不是质数,是就是1。

      当x不是质数时,看奇偶性,如果是偶数根据哥德巴赫猜想可以分成两个素数答案为2。

      如果是奇数的话,根据歌德巴赫猜想可以分成三个质数,此时还有一种特殊情况,就是n-2是质数,就可以分解成n-2和2共两个答案为2,不满足答案则为3。

    ac代码:

    #include<iostream>
    using namespace std;
    typedef long long ll;
    bool check(ll x){
        for(int i=2;i*i<=x;i++){
            if(x%i==0) return 0;
        }
        return 1;
    }
    ll n;
    int main()
    {
        cin>>n;
        if(check(n)) return cout<<1,0;
        if(n%2==0) return cout<<2,0;
        else{
            if(check(n-2)) return cout<<2,0;
            else return cout<<3,0;
        }
        return 0;
    }
  • 相关阅读:
    S3:代理模式 Proxy
    S2:外观模式 Facade
    S1:适配器 Adapter
    C5:单例模式 Singleton
    C4:原型模式 Prototype
    C3:建造者模式 Builder
    C2:抽象工厂 Abstract Factory
    C1:工厂模式 Factory
    设计模式分类
    数据访问对象模式
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/12526010.html
Copyright © 2020-2023  润新知