第一个倍数
第一行给出数的个数 n 和整数 k,第二行给出 n 个整数。
从前往后看,输出第一个能被 k 整除的数。
如果一个也没有,输出 "无"。
0 和负数也可能被 k 整除(0 能被任何 k 整除,-8 能被 4 整除)。
- 输入
- 1 ≤ n ≤ 1000,1 ≤ k ≤ 1000,每个数在 -1,000,000,000 到 1,000,000,000 之间
- 输出
- 第一个 k 的倍数,或 "无"
4 3 4 9 6 12
9
3 7 1 2 3
无
第一行给出数的个数 n 和整数 k,第二行给出 n 个整数。
从前往后看,输出第一个能被 k 整除的数。
如果一个也没有,输出 "无"。
0 和负数也可能被 k 整除(0 能被任何 k 整除,-8 能被 4 整除)。
4 3 4 9 6 12
9
3 7 1 2 3
无
运行时这些行会依次作为 input()/标准输入传入(运行中不会等待输入)。
$ 就绪
请在电脑上打开以编写和运行代码。在手机上可以查看题目和题解。
漏写 break 会一直循环下去,最后留下的是最后一个倍数。
另一个常见错误是在循环里的 else 中决定 "none",这样只看了第一个数就结束了。
“没有”要等整个循环结束后才能知道,各语言的写法不同:Python 有 for … else,只有在没有 break 而结束时才执行 else。
C 把循环变量放在外面,i < n 就说明是 break 出来的。
Java、C#、C++、JS 让 found 之类的变量从 "none" 开始,找到就改掉并停止。
负数取余 Python 是 -3 % 2 == 1,其他语言是 -1,但和 == 0 比较时结果一样,所以本题不受影响。
Craykon 用 跳出; 停止,用 遍历 (x 在 a) 循环。
n, k = map(int, input().split())for x in map(int, input().split()): if x % k == 0: print(x) breakelse: # break 없이 다 돌았을 때만 실행된다 print("无")const [n, k, ...a] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);let found = "无";for (const x of a) { if (x % k === 0) { found = x; break; }}console.log(String(found));import { readFileSync } from "node:fs";const [n, k, ...a]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);let found: number | string = "无";for (const x of a) { if (x % k === 0) { found = x; break; }}console.log(String(found));import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(), k = sc.nextInt(); String found = "无"; for (int i = 0; i < n; i++) { int x = sc.nextInt(); if (x % k == 0) { found = String.valueOf(x); break; } } System.out.println(found); }}using System; class Program{ static void Main() { int k = int.Parse(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries)[1]); string found = "无"; foreach (string s in Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries)) { int x = int.Parse(s); if (x % k == 0) { found = x.ToString(); break; } } Console.WriteLine(found); }}#include <iostream>#include <string> int main() { int n, k; std::cin >> n >> k; std::string found = "无"; for (int i = 0; i < n; i++) { int x; std::cin >> x; if (x % k == 0) { found = std::to_string(x); break; } } std::cout << found << "\n";}#include <stdio.h> int main(void) { int n, k, x, i; scanf("%d %d", &n, &k); for (i = 0; i < n; i++) { scanf("%d", &x); if (x % k == 0) break; } /* break로 나왔으면 i < n */ if (i < n) printf("%d\n", x); else puts("无"); return 0;}first = 控制台.读数字();k = first[1];a = 控制台.读数字();found = "无";遍历 (x 在 a){ 如果 (x % k == 0) { found = x; 跳出; }}控制台.输出(found);