51nod 1284 2 3 5 7的倍数(容斥原理)

来源:互联网 发布:mysql自定义函数 编辑:程序博客网 时间:2024/06/11 02:03

先求出2,3,5,7的倍数的个数,然后用n减掉就好了。。

#include <iostream>#include <algorithm>using namespace std;typedef long long ll;ll gcd(ll a, ll b){    ll temp;    while(b)    {        temp = a % b;        a = b;        b = temp;    }    return a;}ll lcm(ll a, ll b){    return a/gcd(a,b)*b;}int main(){    ll n;    cin >> n;    ll sum = n/2+n/3+n/5+n/7;    sum = sum - n/lcm(2,3)-n/lcm(2,5)-n/lcm(2,7)-n/lcm(3,5)-n/lcm(3,7)-n/lcm(5,7);    sum = sum + n/lcm(lcm(2,3),5) + n/lcm(lcm(2,3),7) + n/lcm(lcm(3,5),7) + n/lcm(lcm(2,5),7);    sum = sum - n/lcm(lcm(2,3),lcm(5,7));    cout << n-sum <<endl;    return 0;}
0 0
原创粉丝点击