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

奇数桁と偶数桁の合計の差が0かどうかを判定するJavaプログラム

問題文

与えられた長整数 n に対して、0番目から数えた奇数番目の桁の合計と、偶数番目の桁の合計との差が 0 になるかどうかを判定するプログラムを作成します。インデックスは 0 から始まるものとします。

n = 1212112 の場合

奇数番目の桁の合計
= 2 + 2 + 1
= 5

偶数番目の桁の合計
= 1 + 1 + 1 + 2
= 5

差
= 5 - 5
= 0

出力
= Yes

このように、両者の合計が一致していれば「Yes」、一致していなければ「No」が出力されます。

解法のポイント:11の倍数判定法との関係

この問題には、実はとても便利な数学的な性質があります。それは「11の倍数判定法」です。ある整数が 11 で割り切れるかどうかを調べる有名な判定法では、奇数桁の合計と偶数桁の合計の差が 0(または 11 の倍数)であれば、その数は 11 の倍数であるとされています。

つまり、n % 11 == 0 が成り立てば、奇数桁と偶数桁の合計の差は必ず 0 になります。この性質を利用すれば、各桁を一つずつ分解して合計を計算する複雑な処理は不要となり、たった 1 行の剰余演算で答えを導き出せます。

Javaでの実装例

class JavaTester {
   public static int difference(int n){
      return (n % 11);
   }
   public static void main(String args[]){
      int n = 1212112;
      System.out.println("Number: " + n);
      System.out.println(difference(n) == 0 ? "Yes" : "No");
      n = 12121121;
      System.out.println("Number: " + n);
      System.out.println(difference(n) == 0 ? "Yes" : "No");
   }
}

コードの解説

difference メソッドは、引数として受け取った整数 n を 11 で割った余りをそのまま返します。main メソッドでは、この戻り値が 0 であれば「Yes」を、そうでなければ「No」を出力します。三項演算子(? :)を使用することで、if 文による条件分岐を簡潔に 1 行で表現している点もポイントです。

出力結果

Number : 1212112
Output: Yes
Number : 12121121
Output: No

1つ目の数 1212112 は奇数桁と偶数桁の合計がどちらも 5 で差が 0 となるため「Yes」。一方、2つ目の数 12121121 は差が 0 にならないため「No」と表示されます。

まとめ

奇数桁と偶数桁の合計の差が 0 かどうかの判定は、11 の倍数判定法を活用することで、n % 11 == 0 というシンプルな条件式だけで実現できます。文字列への変換やループによる桁の分解が一切不要なため、計算量も少なく、非常に効率的でエレガントな解法といえるでしょう。

  1. GoとJavaの違いを徹底比較!特徴と使い分けのポイント

    プログラミング言語を選ぶ際、「Go」と「Java」のどちらを採用すべきか迷う開発者は少なくありません。どちらもGoogleや企業システムで広く使われる人気言語ですが、設計思想や言語仕様には大きな違いがあります。本記事では、それぞれの言語の特徴を解説したうえで、両者の主な違いを比較表を使ってわかりやすく整理します。 GoとはGoはGoogleが開発した手続き型(プロシージャル)プログラミング言語です。プログラムはパッケージ単位で構成され、シンプルで読みやすいコード記述を重視した設計になっています。動的言語に近い柔軟なパターンを取り入れつつ、静的型付けによる安全性も兼ね備えています。また、軽量スレ

  2. Pythonで奇数桁と偶数桁の合計の差を判定するプログラム

    この記事では、与えられた問題を解決するための解法とアプローチについて詳しく解説します。 問題文 整数が1つ与えられたとき、奇数桁の合計と偶数桁の合計の差が0であるかどうかを判定する必要があります。 素朴なアプローチ(ブルートフォース) 最も単純な方法は、数値を構成するすべての偶数桁と奇数桁の合計をそれぞれ計算し、その差を求めることです。しかし、この方法では各桁を順番に処理するため、桁数に比例した計算時間が必要になります。 効率的なアプローチ:11の倍数判定を活用 計算時間を削減するために、「暗算の数学」でよく知られている性質を利用します。それは「ある整数の奇数桁の合計と偶数桁の合計の差が0にな