题目:给定三个整数 a,b,c如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。
请问在 1 至 n 中有多少个反倍数。
输入描述
输入的第一行包含一个整数 n。
第二行包含三个整数 a,b,c相邻两个数之间用一个空格分隔。
其中,1≤n≤1000000,1≤a≤n,1≤b≤n,1≤c≤n。
输出描述
输出一行包含一个整数,表示答案。
输入输出样例
示例
输入
30
2 3 6
输出
10
解题思路+代码:
代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//获取1-n的数 以及abc3个整数
int n = scan.nextInt();
int a = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
int count = 0;
//遍历1-n的数,如果n %(a,b,c三个整数中的任一个)== 0时,即不是反倍数
for(int i = 1; i<=n ;i++){
if(!(i % a == 0 || i % b == 0 || i % c == 0)){
count++; //统计是反倍数的个数
}
}
System.out.println(count); //结果输出
scan.close();
}
}
总结:这道题比较简单,要考虑的就是n %(a,b,c三个整数中的任一个)== 0时,即不是反倍数的情况,再进行取反就是反倍数的情况了,最后输出结果即可。