本题背景为容斥原理,将容斥原理进行介绍
即图中圆ABC不重叠面积和为 (S1+S5+S2)- (S4-S6-S3)+S7
也就是说 单独的面积和 -两两相交的面积+三个相交的面积。推广到多个圆也适用,即奇数为正,偶数为负。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int []p = new int[m];
for(int i = 0 ;i < m ;i++) p[i] = in.nextInt();
int res = 0;
for(int i = 1;i< 1<<m;i++){
//枚举每一种方案
long cnt =0,t=1;
for(int j = 0;j < m;j++){
if((i>>j&1)==1){
//需要加long否则会爆溢出
if(t*p[j]>n){
t= -1;
break;
}
t *= p[j];
cnt++;
}
}
if(t != -1){
//根据容斥原理奇数项要加
if(cnt % 2 ==1) res+= n/t;
// 根据容斥原理偶数项要进行减法
else res -= n/t;
}
}
System.out.println(res);
}
}