题目链接
题目描述
给定一个 的矩阵,请你统计其中有多少个元素的个位数字是 9。
解题思路
本题是一个基础的矩阵遍历和计数问题。解决这个问题的核心在于两个步骤:一是如何遍历矩阵中的所有元素,二是如何判断一个整数的个位数是否为 9。
1. 遍历矩阵
我们可以使用两层嵌套的循环来访问矩阵中的每一个元素。外层循环负责遍历行(从第 1 行到第 行),内层循环负责遍历列(从第 1 列到第
列)。
2. 判断个位数
对于任意一个正整数 num
,我们可以通过取模运算 num % 10
来得到它的个位数字。例如,39 % 10
的结果是 9
,10 % 10
的结果是 0
。
因此,判断一个数 num
的个位数是否为 9 的条件就是 num % 10 == 9
。
算法流程:
- 初始化一个计数器
count
为 0。 - 读取矩阵的行数
和列数
。
- 通过
次循环(或两层嵌套循环)读取每一个矩阵元素。
- 对读入的每一个元素
val
,检查val % 10 == 9
是否成立。 - 如果成立,则将
count
加 1。 - 遍历结束后,输出
count
的值。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, m;
cin >> n >> m;
int count_of_nines = 0;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
int val;
cin >> val;
if (val % 10 == 9) {
count_of_nines++;
}
}
}
cout << count_of_nines << endl;
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int countOfNines = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int val = sc.nextInt();
if (val % 10 == 9) {
countOfNines++;
}
}
}
System.out.println(countOfNines);
}
}
import sys
def solve():
n, m = map(int, sys.stdin.readline().split())
count_of_nines = 0
for _ in range(n):
row = list(map(int, sys.stdin.readline().split()))
for val in row:
if val % 10 == 9:
count_of_nines += 1
print(count_of_nines)
solve()
算法及复杂度
- 算法:矩阵遍历 / 线性扫描
- 时间复杂度:
,其中
和
分别是矩阵的行数和列数。因为需要访问矩阵中的每一个元素一次。
- 空间复杂度:
,我们只需要常数级别的额外空间来存储计数器和当前读取的元素值。