{ }codelper
break / continueP0023

第一个倍数

第一行给出数的个数 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 的倍数,或 "无"
样例 1 · stdin
4 3
4 9 6 12
stdout
9
样例 2 · stdin
3 7
1 2 3
stdout
无
main.py
输入(stdin)

运行时这些行会依次作为 input()/标准输入传入(运行中不会等待输入)。

$ 就绪

请在电脑上打开以编写和运行代码。在手机上可以查看题目和题解。

其他语言怎么写?查看各语言题解 · 8 种语言题解

漏写 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) 循环。

Pythonmain.py · 7 行
n, k = map(int, input().split())for x in map(int, input().split()):    if x % k == 0:        print(x)        breakelse:  # break 없이 다 돌았을 때만 실행된다    print("无")
JavaScriptmain.js · 9 行
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));
TypeScriptmain.ts · 10 行
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));
JavaMain.java · 17 行
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);    }}
C#Main.cs · 20 行
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);    }}
C++main.cpp · 17 行
#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";}
Cmain.c · 14 行
#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;}
Craykonmain.cray · 13 行
first = 控制台.读数字();k = first[1];a = 控制台.读数字();found = "无";遍历 (x 在 a){    如果 (x % k == 0)    {        found = x;        跳出;    }}控制台.输出(found);