首页 > 试题广场 >

健身达人每日步数

[编程题]健身达人每日步数
  • 热度指数:32 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 512M,其他语言1024M
  • 算法知识视频讲解
作为一名健身达人,你坚持每天记录自己的步行数据,并持续了 N 天。
为了更好地激励自己,你定义了一个“突破日”的概念:

如果某一天的步数,严格大于其后任意一天步数的两倍,那么这一天就被称作一个“突破日”。

现在,请你根据这 N 天的步数记录,统计出其中共有多少个“突破日”。

输入描述:
输入共 2 行:

1. 第一行是一个整数 N,代表记录的总天数。
2. 第二行包含 N 个整数 S_0, S_1, \dots, S_{N-1},代表从第 0 天到第 N-1 天,每天的步数记录。

数据范围 :
0 \le N \le 1000
0 \le S_i \le 100000


输出描述:
输出一个整数,代表这 N 天中“突破日”的总数量。
示例1

输入

5
2 4 3 5 1

输出

3
示例2

输入

5
1 3 2 3 1

输出

2

备注:
本题由牛友@Charles 整理上传
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int[] nums = new int[n];
            for (int i = 0; i < n; i++) nums[i] = in.nextInt();
            int count = 0;
            for (int i = 0; i < n; i++) {
                for (int j = i + 1; j < n; j++) {
                    if (nums[i] > nums[j] * 2) {
                        count++;
                        break;
                    }
                }
            }
            System.out.println(count);
        }
    }
}

发表于 2025-12-09 20:43:30 回复(0)