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

配列内のすべての数字を使って3の倍数を作れるか判定するJavaプログラム

配列内のすべての数字(桁)を使用して、3で割り切れる数を作ることができるかどうかを判定する方法は、実は非常にシンプルです。その鍵となるのが「3の倍数の性質」です。各要素を3で割った余りの合計が0になれば、それらの数字を組み合わせて3の倍数を作れることになります。以下にJavaのコード例を示します。

サンプルコード

import java.io.*;
import java.util.*;
public class Demo{
   public static boolean division_possible(int my_arr[], int n_val){
      int rem = 0;
      for (int i = 0; i < n_val; i++)
         rem = (rem + my_arr[i]) % 3;
      return (rem == 0);
   }
   public static void main(String[] args){
      int my_arr[] = { 66, 90, 87, 33, 123};
      int n_val = 3;
      if (division_possible(my_arr, n_val))
         System.out.println("3で割り切れる数を作ることができます");
      else
         System.out.println("3で割り切れる数を作ることはできません");
   }
}

出力結果

3で割り切れる数を作ることができます

コードの解説

このプログラムでは、Demoという名前のクラスを定義し、その中にdivision_possibleという関数を用意しています。この関数は、配列内の数字を使って3で割り切れる数を作れるかどうかを判定する役割を担います。

メイン関数では、値を持つ配列と、使用する要素数を表す変数n_valが定義されています。その後、これらの引数を渡して関数を呼び出し、判定結果に応じたメッセージがコンソールに出力されます。

なぜこの方法が機能するのか

この判定が正しく動作する理由は、「ある数が3の倍数であることと、その各位の数字の和が3の倍数であることは同値」という数学的な性質によるものです。したがって、配列内のすべての数字の総和を3で割った余りが0であれば、それらの数字をどのように並べても(あるいは組み合わせても)必ず3の倍数を作ることができます。

アルゴリズムの流れは次のとおりです。

  • 余りを保持する変数remを0で初期化します。
  • 配列の各要素について、現在の余りに要素を加算し、さらに3で割った余りを求めます。
  • 最終的にremが0であればtrue(作成可能)、そうでなければfalse(作成不可能)を返します。

このアプローチの計算量はO(n)であり、配列を一度走査するだけで済むため、非常に効率的です。大きな数値を実際に組み立てて割り算を行う必要がないため、オーバーフローの心配もありません。

  1. 【Python】配列内のすべての桁を使って3で割り切れる数を作成できるか判定する方法

    この記事では、与えられた問題文を解決するための解法とアプローチについて詳しく解説します。 問題文 整数の配列が入力として与えられたとき、これらの数値に含まれるすべての桁を使用して、3で割り切れる整数を作成できるかどうかを判定する必要があります。 ここでは、整数の配列と配列の長さという2つの引数を受け取る関数を作成します。 解法のポイント この実装は、暗算でよく使われる数学的な性質に基づいています。それは次の通りです。 「ある数の各桁の合計が3で割り切れるならば、その数自体も3で割り切れる」 この性質を利用すると、実際に桁を組み合わせて数値を生成する必要はなく、配列内の各要素について3で割った余

  2. Pythonで数値のすべての桁がその数自身を割り切るかどうかを判定する方法

    はじめにこの記事では、与えられた問題に対する解法とアプローチについて学びます。具体的には、「ある整数のすべての桁が、その整数自身を割り切るかどうか」をPythonで判定する方法を解説します。問題文問題: 数値 n が与えられたとき、n のすべての桁が n を割り切るかどうかを判定してください。考慮すべきポイントまず、入力された数値に 0 が含まれていないかを確認する必要があります。0 で割ろうとするとゼロ除算例外(ZeroDivisionError)が発生するため、0 が含まれる場合は答えとして「No」を返さなければなりません。それ以外の場合は、一時変数 flag を用いて判定条件を宣言し、す