标签:
Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5008    Accepted Submission(s): 1421
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#define LL long long
using namespace std;
LL n,m,num[15],ans;
LL gcd(LL a,LL b)
{
    return b>0?gcd(b,a%b):a;
}
void dfs(int id,int flag,LL LCM)
{
    LCM=num[id]/gcd(num[id],LCM)*LCM;
    if(flag)
        ans+=n/LCM;
    else
        ans-=n/LCM;
    for(int i=id+1;i<=m;i++)
        dfs(i,!flag,LCM);
}
int main()
{
    while(scanf("%I64d%I64d",&n,&m)!=EOF)
    {
        n--;
        ans=0;
        for(int i=1;i<=m;i++)
        {
            scanf("%I64d",&num[i]);
            if(num[i]==0)
                i--,m--;
        }
        sort(num+1,num+1+m);
        for(int i=1;i<=m;i++)
            dfs(i,1,num[i]);
        printf("%I64d\n",ans);
    }
    return 0;
}
标签:
原文地址:http://www.cnblogs.com/a972290869/p/4440749.html