codeforces 630K - Indivisibility

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 630K - Indivisibility相关的知识,希望对你有一定的参考价值。

K. Indivisibility

题意:给一个n(1 <= n <= 10^18)的区间,问区间中有多少个数不能被2~10这些数整除;

整除只需要看素数即可,只有2,3,5,7四个素数;基本的容斥原理;数据很小直接用二进制模拟了;

int main()
{
    ll n,a[] = {2,3,5,7};
    scanf("%I64d",&n);
    ll cnt = n;
    for(int id = 1;id < (1<<4);id++){
        int num = 1;
        rep0(i,0,4)if(id &(1<<i)){
            num *= a[i];
        }
        int t = 1;
        if(__builtin_popcount(id) & 1) t = -1;
        cnt += 1LL*t*(n/num);
    }
    cout<<cnt;
    return 0;
}

 

以上是关于codeforces 630K - Indivisibility的主要内容,如果未能解决你的问题,请参考以下文章

LQ 630k 真是打印机 打印发票显示不全

win732位想共享64位上的爱普生630k打印机设本地端口拒绝访问是啥原因

将列更新为连接列中的值

codeforces上怎么看测试数据

如何看codeforces做了多少题

codeforces上怎么看测试数据