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

【C言語】奇数の桁と偶数の桁の合計差を求めるプログラム

ある数値が与えられたとき、その奇数の桁の合計偶数の桁の合計の差を求めるプログラムを考えてみましょう。具体的には、数値を構成するすべての桁を偶数と奇数に分類し、それぞれの合計値を計算したうえで、その差を求めます。

サンプル

入力:12345
出力:3

解説

奇数の桁:1 + 3 + 5 = 9
偶数の桁:2 + 4 = 6
差(奇数 − 偶数):9 − 6 = 3

この問題は、次のような流れで解くことができます。まず数値から1桁ずつ数字を取り出し、それが偶数か奇数かを判定します。偶数であれば偶数の合計に、そうでなければ奇数の合計に加算していき、最後に両者の差を計算します。

アルゴリズムの手順

  1. 「n % 10」で数値の末尾の桁を取り出します。
  2. 取り出した桁が偶数かどうか(r % 2 == 0)を判定します。
  3. 偶数なら変数evenに、奇数なら変数oddに加算します。
  4. 「n /= 10」で数値を1桁ずらし、nが0になるまで繰り返します。
  5. 最後に「odd − even」を計算して結果を出力します。

実装例

#include <iostream>
using namespace std;
int main() {
    int n, r = 0;
    int diff = 0;
    int even = 0;
    int odd = 0;
    n = 12345;
    while(n != 0){
        r = n % 10; // 末尾の桁を取り出す
        if(r % 2 == 0) {
            even += r; // 偶数ならevenへ加算
        } else {
            odd += r; // 奇数ならoddへ加算
        }
        n /= 10; // 桁を1つ削る
    }
    diff = odd - even;
    printf("%d", diff);
    return 0;
}

実行結果

3

コードのポイント

  • n % 10:数値の最下位桁(1の位)を取得します。12345なら5が得られます。
  • r % 2 == 0:桁を2で割った余りが0なら偶数、それ以外は奇数と判定できます。
  • n /= 10:整数除算によって数値を1桁右にシフトし、処理済みの桁を取り除きます。

このアルゴリズムの計算量はO(d)です。ここでdは数値の桁数を表すため、どれだけ大きな数値でも桁数に比例した回数で処理できる、非常に効率的な方法といえます。

  1. 【Python】約数の個数が偶数か奇数かを判定するプログラムの書き方

    この記事では、ある整数の約数の個数が偶数か奇数かを判定するPythonプログラムについて、その考え方と実装方法をわかりやすく解説します。 問題文 ある数「n」が与えられたとき、その約数の総数が偶数であるか奇数であるかを判定してください。 例えば、n = 10 の場合、約数は 1, 2, 5, 10 の4つなので「偶数」。一方、n = 100 の場合は 1, 2, 4, 5, 10, 20, 25, 50, 100 の9つとなり「奇数」となります。 アプローチ:約数を実際に数える 最も基本的な方法は、すべての約数を見つけ、その個数が偶数か奇数かをチェックすることです。 ここで重要なのは、約数

  2. OneDriveとOneDrive for Businessの違いとは?使い分けのポイントを徹底解説

    Microsoftのクラウドストレージサービス「OneDrive」を使えば、どこにいても自分のファイルにアクセスできます。しかし、実はMicrosoftは名前がよく似た2種類のOneDriveを提供しています。「OneDrive」と「OneDrive for Business」のどちらを使うべきかは、クラウドに何を保存するのか、そしてどうやってアクセスする必要があるのかによって変わってきます。 OneDrive(個人向け)の特徴 「OneDrive」は、個人ユーザー向けに設計されたMicrosoftのクラウドサービスです。個人のOutlookアカウントに含まれており、Windows 10では自