{ }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);