acwing 890. 能被整除的数

 

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int m;
int n,p[20];
int sum,ans;
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
        scanf("%d",&p[i]);
    for(int i=1;i<1<<m;i++)
    {
            int cut=0;
            ll k=1;
        for(int j=0;j<m;j++)
        {
            
            if((i>>j) &1)
            {
                k*=p[j+1];
                if(k>n)
                {
                    k=0;
                    break;
                }
                cut++;
            }
        }
        if(k)
            if(cut%2)sum+=n/k;
            else sum-=n/k;
    }
    cout<<sum;
    return 0;
}

 

给定一个整数nm个不同的质数p1,p2,,pm

请你求出1

~n中能被p1,p2,,pm中的至少一个数整除的整数有多少个。

posted @ 2020-12-29 16:40  君与  阅读(70)  评论(0编辑  收藏  举报