跳着倒数
给出整数 n 和 s。
从 n 开始每次减 s,只把大于等于 1 的数输出在一行里。
数与数之间各放一个空格,行首不放空格。
例如 n = 10, s = 3 输出 10 7 4 1,n = 10, s = 5 输出 10 5(不输出 0)。
- 输入
- 1 ≤ s ≤ n ≤ 10,000
- 输出
- 一行
10 3
10 7 4 1
10 5
10 5
给出整数 n 和 s。
从 n 开始每次减 s,只把大于等于 1 的数输出在一行里。
数与数之间各放一个空格,行首不放空格。
例如 n = 10, s = 3 输出 10 7 4 1,n = 10, s = 5 输出 10 5(不输出 0)。
10 3
10 7 4 1
10 5
10 5
运行时这些行会依次作为 input()/标准输入传入(运行中不会等待输入)。
$ 就绪
请在电脑上打开以编写和运行代码。在手机上可以查看题目和题解。
陷阱是在哪里停下。
Python 的 range(n, 0, -s) 不含终点 0,所以能到 1;写成 range(n, 1, -s) 即使正好到 1 也会漏掉 1。
C 系的 for (i = n; i >= 1; i -= s) 如果写成 i >= 0,n 是 s 的倍数时会输出 0。
如果先算次数再循环,个数是 (n - 1) / s + 1 而不是 n / s(10 3 有 4 个)。
空格只放在中间:每个数前面都加 " " 会让行以空格开头而判错(本评测只宽容行尾空格)。
多数语言有连接工具:Python " ".join(...) 或 print(*range(n, 0, -s)),JS/TS 数组.join(" "),Java StringJoiner、String.join,C# string.Join(" ", …)。
C 和 C++(C++23 之前)没有顺手的工具,要自己写“不是第一个数就先输出空格”。
Craykon 和 C 一样,用 控制台.接着输出(…) 不换行地输出,最后用 控制台.输出("") 换行(也可以收集到列表再 列表.连接(" ")),倒着走的循环是 循环 (i = n; i >= 1; i -= s)。
n, s = map(int, input().split())# range(시작, 끝, 걸음): 끝(0)은 들어가지 않는다 → 1까지print(" ".join(str(i) for i in range(n, 0, -s)))const [n, s] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const out = [];for (let i = n; i >= 1; i -= s) out.push(i);console.log(out.join(" "));import { readFileSync } from "node:fs";const [n, s]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const out: number[] = [];for (let i = n; i >= 1; i -= s) out.push(i);console.log(out.join(" "));import java.util.Scanner;import java.util.StringJoiner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(), s = sc.nextInt(); StringJoiner out = new StringJoiner(" "); for (int i = n; i >= 1; i -= s) out.add(String.valueOf(i)); System.out.println(out); }}using System;using System.Collections.Generic; class Program{ static void Main() { int[] v = Array.ConvertAll(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries), int.Parse); int n = v[0], s = v[1]; var out_ = new List<int>(); for (int i = n; i >= 1; i -= s) out_.Add(i); Console.WriteLine(string.Join(" ", out_)); }}#include <iostream> int main() { std::ios::sync_with_stdio(false); int n, s; std::cin >> n >> s; for (int i = n; i >= 1; i -= s) { if (i != n) std::cout << ' '; std::cout << i; } std::cout << "\n";}#include <stdio.h> int main(void) { int n, s; scanf("%d %d", &n, &s); for (int i = n; i >= 1; i -= s) { if (i != n) putchar(' '); /* 사이에만 빈칸: 첫 수 앞에는 없음 */ printf("%d", i); } putchar('\n'); return 0;}v = 控制台.读数字();n = v[0];s = v[1];循环 (i = n; i >= 1; i -= s){ 如果 (i != n) { 控制台.接着输出(" "); } 控制台.接着输出(i);}控制台.输出("");