zoukankan      html  css  js  c++  java
  • codeforces 735D Taxes(数论)

    Maximal GCD

    题目链接:http://codeforces.com/problemset/problem/735/D

        ——每天在线,欢迎留言谈论。

    题目大意:

    给你一个n(2≤n≤2e9) 代表一个人的收入。

    他需要交税,规则:交税金额为n的最大公约数(本身不算)

    他想通过把钱分成几份,然后分别交税,达到交税最少。

    知识点:

    哥德巴赫猜想:①如果一个数为偶数,那么可以拆成两个质数相加

    ②如果一个奇数 (n-2)为质数那么他也可以拆成两个质数相加(2+(n-2))

    ③其他的奇数 可以拆成一个 质素+一个偶数  也就是 3个质数相加

    思路:

    知道这个数论知识就很好做了。

    AC代码:

     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 typedef long long ll;
     5 bool iszs(ll n)
     6 {
     7     ll b=sqrt(n);
     8     for(int i=2;i<=b;i++)
     9     {
    10         if(n%i==0)
    11             return false;
    12     }
    13     return true;
    14 }
    15 int main()
    16 {
    17     ll n;
    18     cin>>n;
    19     if(iszs(n))
    20     {
    21         cout<<"1"<<endl;return 0;
    22     }
    23     if(n&1)
    24     {
    25         if(iszs(n-2))
    26         {
    27             cout<<"2"<<endl;return 0;
    28         }
    29         cout<<"3"<<endl;return 0;
    30     }
    31     else
    32         cout<<"2"<<endl;
    33     return 0;
    34 }

    2017-05-28 16:45:27

  • 相关阅读:
    java 反射
    java 面试题
    Java构造和解析Json数据的两种方法详解一
    JAVA UUID 生成
    tomcat 插件
    webstorm 激活码
    maven环境搭建
    svn 安装网站
    2015.6.30 反弹的教训(想做T)
    2015.6.15 惨跌开始的反思
  • 原文地址:https://www.cnblogs.com/Twobox/p/6916023.html
Copyright © 2011-2022 走看看