3 的倍数
目录
题目描述
小蓝对 3 的倍数很感兴趣。现在他手头有三个不同的数 ( a, b, c ),他想知道这三个数中是不是有两个数的和是 3 的倍数。
示例
示例 1
输入:
3
4
6
输出:
yes
解释:
- ( a = 3 ), ( c = 6 ),它们的和 ( 3 + 6 = 9 ) 是 3 的倍数。
示例 2
输入:
3
4
7
输出:
no
解释:
- 没有任何两个数的和是 3 的倍数。
思路分析
问题核心
我们需要判断三个数 ( a, b, c ) 中是否存在两个数,它们的和是 3 的倍数。
思路拆解
- 输入处理:
- 读取三个整数 ( a, b, c )。
- 判断条件:
- 检查 ( a + b )、( a + c )、( b + c ) 是否是 3 的倍数。
- 输出结果:
- 如果存在两个数的和是 3 的倍数,输出
yes
,否则输出no
。
- 如果存在两个数的和是 3 的倍数,输出
代码段
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if ((a + b) % 3 == 0 || (a + c) % 3 == 0 || (c + b) % 3 == 0) {
System.out.println("yes");
} else {
System.out.println("no");
}
sc.close();
}
}
代码逐行讲解
-
输入处理:
Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt();
- 使用
Scanner
读取输入的三个整数 ( a, b, c )。
- 使用
-
判断条件:
if ((a + b) % 3 == 0 || (a + c) % 3 == 0 || (c + b) % 3 == 0) {
- 检查 ( a + b )、( a + c )、( b + c ) 是否是 3 的倍数。
-
输出结果:
System.out.println("yes"); } else { System.out.println("no"); }
- 如果存在两个数的和是 3 的倍数,输出
yes
,否则输出no
。
- 如果存在两个数的和是 3 的倍数,输出
-
关闭输入流:
sc.close();
- 关闭
Scanner
以释放资源。
- 关闭
复杂度分析
时间复杂度
- 只需要进行三次加法运算和三次取模运算,时间复杂度为 O(1)。
空间复杂度
- 只使用了常数级别的额外空间,因此空间复杂度为 O(1)。
总结的知识点
-
输入处理:
- 使用
Scanner
读取输入的整数。
- 使用
-
条件判断:
- 使用
if
语句和逻辑运算符||
进行条件判断。
- 使用
-
数学运算:
- 使用加法运算和取模运算判断是否是 3 的倍数。
整合
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if ((a + b) % 3 == 0 || (a + c) % 3 == 0 || (c + b) % 3 == 0) {
System.out.println("yes");
} else {
System.out.println("no");
}
sc.close();
}
}
总结
掌握了如何通过简单的条件判断和数学运算来解决实际问题。关键点包括:
- 使用
Scanner
读取输入。 - 使用
if
语句和逻辑运算符进行条件判断。 - 使用加法和取模运算判断是否是 3 的倍数。