AcWing 890. 能被整除的数
原题链接
简单
作者:
我爱大雪菜
,
2020-06-02 17:30:16
,
所有人可见
,
阅读 600
能被整除的数
import java.util.Scanner;
public class Main {
static int N = 20;
static int p[] = new int[N];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
for(int i = 0 ; i < m ; i ++) p[i] = scanner.nextInt();
int res = 0;
for(int i = 1; i < 1<<m; i ++) {//枚举每一种方案
long t = 1,s = 0;//s用来记录这种方案,选择的数的个数,从而判断应该加还是减;t存累乘的结果
for(int j = 0; j < m ; j ++) {
if((i>>j&1)==1) {
if(t*p[j]>n) {//这里要加long 否则会溢出
t = -1;
break;
}
t *= p[j];
s++;
}//为这种方案求出一个总乘积t
}
if(t!=-1) {
if(s%2==1) res += n/t;//奇数个数,说明要加
else res -= n/t;//偶数个数,说明要减
}
}
System.out.println(res);
}
}