C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++】N以下でK割り切れる最大の数を求める方法

はじめに

このチュートリアルでは、C++を使って「N以下の整数の中で、Kで割り切れる最大の数」を求めるプログラムを作成します。剰余演算子(%)を活用することで、わずか数行のコードで効率よく解くことができる問題です。

解き方の手順

  • 整数 n と k を初期化します。
  • 剰余演算子(%)を使って、n を k で割った余りを求めます。
  • 余りが 0 の場合、n はすでに k で割り切れているため、そのまま n を返します。
  • 余りが 0 以外の場合は、n から余りを引いた値(n − 余り)を返します。

サンプルコード

それでは、実際のコードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;

int findLargestNumber(int n, int k) {
    int remainder = n % k;
    if (remainder == 0) {
        return n;
    }
    return n - remainder;
}

int main() {
    int n = 33, k = 5;
    cout << findLargestNumber(n, k) << endl;
    return 0;
}

実行結果

上記のコードを実行すると、次の出力が得られます。

30

コードの解説

この例では、n = 33、k = 5 としています。33 を 5 で割ると余りは 3 になるため、「33 − 3 = 30」が返されます。実際に 30 は 5 で割り切れ、33 以下の条件を満たす最大の数となっています。

このアルゴリズムの計算量は O(1) であり、剰余計算を一度行うだけで答えが求まるため、非常に効率的です。ループで一つずつ数を確認する必要はありません。

まとめ

剰余演算子を使えば、N以下でK割り切れる最大の数を簡単に求められることを学びました。本チュートリアルについて質問がある場合は、ぜひコメント欄でお知らせください。

  1. Xで割り切れる最大のK桁の数を求めるC++プログラム

    2つの整数 X と K が与えられます。ここで K は桁数を表します。この問題の目的は、Xで割り切れる最大のK桁の数を見つけることです。入力:X = 30, K = 3 出力:980考え方出力例の 980 は、30で割り切れる最大の3桁の数です。この問題は次の手順で解くことができます。まず、10 の K 乗から 1 を引くことで、K桁の数の最大値(MAX)を求めます。例:K = 3 の場合、10³ − 1 = 999次に、MAX を X で割った余り(MAX % X)を MAX から引きます。これにより、Xで割り切れる最大のK桁の数が得られます。余りを引くという操作により、MAX 以下でかつ

  2. Xで割り切れる最大のK桁の数を求めるC++プログラム

    この記事では、「Xで割り切れる最大のK桁の整数」を求める問題をC++で解く方法を解説します。一見すると複雑そうに思えますが、実は非常にシンプルな数式だけで答えを導き出せる、アルゴリズム学習に最適な題材です。解法の基本的な考え方K桁の最大の整数は、次の公式で簡単に求められます。max = 10^k − 1例えば5桁なら「99999」、6桁なら「999999」となります。この最大値がそのままXで割り切れれば、それが答えです。もし割り切れない場合は、次の式を使うことで、Xで割り切れる最大のK桁の数を一発で計算できます。max − (max mod X)具体例:5桁かつ29の倍数となる最大の数まず、5