题目链接
题目描述
小红在浏览一个有 个帖子的论坛。每个帖子都有一个点赞数
和一个反对数
。给定一个整数阈值
,小红只喜欢阅读那些点赞数与反对数之差的绝对值大于等于
的帖子(即
)。请问在这
个帖子中,有多少个是小红喜欢阅读的?
解题思路
本题的解法非常直接,属于基础的计数问题。我们只需要根据题目给定的条件,逐一检查每个帖子,并统计满足条件的帖子数量即可。
算法步骤如下:
- 初始化:创建一个计数器变量,例如
count
,并将其初始值设为 0。 - 读取输入:读取帖子的总数
和阈值
。
- 遍历与判断:循环
次,每次循环处理一个帖子。
- 在循环内部,读取当前帖子的点赞数
和反对数
。
- 使用
if
语句判断是否满足条件。在编程中,这通常通过
abs(a - b) >= x
来实现。 - 如果条件成立,则将计数器
count
的值加 1。
- 在循环内部,读取当前帖子的点赞数
- 输出结果:循环结束后,
count
的值就是小红喜欢阅读的帖子总数,将其输出即可。
代码
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, x;
cin >> n >> x;
int liked_posts_count = 0;
for (int i = 0; i < n; ++i) {
int a, b;
cin >> a >> b;
if (abs(a - b) >= x) {
liked_posts_count++;
}
}
cout << liked_posts_count << 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 x = sc.nextInt();
int likedPostsCount = 0;
for (int i = 0; i < n; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
if (Math.abs(a - b) >= x) {
likedPostsCount++;
}
}
System.out.println(likedPostsCount);
}
}
import sys
def solve():
n, x = map(int, sys.stdin.readline().split())
liked_posts_count = 0
for _ in range(n):
a, b = map(int, sys.stdin.readline().split())
if abs(a - b) >= x:
liked_posts_count += 1
print(liked_posts_count)
solve()
算法及复杂度
- 算法:线性扫描
- 时间复杂度:
,其中
是帖子的总数。我们对每个帖子只进行一次判断。
- 空间复杂度:
,我们只需要常数级别的额外空间来存储计数器和当前帖子的数据。