您的位置:首页 > 其它

codeforces 735D Taxes(数论)

2017-05-28 16:46 429 查看

Maximal GCD

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

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

题目大意:

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

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

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

知识点:

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

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

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

 

思路:

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

AC代码:

#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
bool iszs(ll n)
{
ll b=sqrt(n);
for(int i=2;i<=b;i++)
{
if(n%i==0)
return false;
}
return true;
}
int main()
{
ll n;
cin>>n;
if(iszs(n))
{
cout<<"1"<<endl;return 0;
}
if(n&1)
{
if(iszs(n-2))
{
cout<<"2"<<endl;return 0;
}
cout<<"3"<<endl;return 0;
}
else
cout<<"2"<<endl;
return 0;
}

2017-05-28 16:45:27

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: