C++で数値配列の要素の積の最初の桁を求める方法
このチュートリアルでは、C++を使って配列の要素の積の最初の桁(先頭の桁)を求める方法を学びます。
まず、問題を解くための手順を確認しましょう。
配列を初期化します。
配列内のすべての要素の積を計算します。
その結果が10未満になるまで、10で割り続けます。
最後に残った1桁の数字を出力します。
コード例
それでは、実際のコードを見てみましょう。
#include <bits/stdc++.h>
using namespace std;
int productOfArrayDigits(int arr[], int n) {
int product = 1;
for (int i = 0; i < n; i++) {
product *= arr[i];
}
return product;
}
int firstDigitOfNumber(int n) {
while (n >= 10) {
n /= 10;
}
return n;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6 };
cout << firstDigitOfNumber(productOfArrayDigits(arr, 6)) << endl;
return 0;
}
出力
上記のコードを実行すると、次のような結果が得られます。
7
コードの解説
このプログラムでは、まずproductOfArrayDigits関数が配列 {1, 2, 3, 4, 5, 6} の全要素の積(720)を計算します。次に、firstDigitOfNumber関数がその値を10未満になるまで10で割り続けることで、先頭の桁である「7」を取得しています。
なお、配列の要素数が多い場合や要素の値が大きい場合には、積がint型の範囲を超えてオーバーフローする可能性があるため、そのようなケースではlong long型などより大きなデータ型を使用することをおすすめします。
まとめ
このチュートリアルについてご不明な点がある場合は、コメント欄でお気軽にお知らせください。
-
C++で最初のN個のイッカノビフ(Iccanobif)数を求めるプログラム
このチュートリアルでは、最初のN個のイッカノビフ(Iccanobif)数を求めるC++プログラムについて解説します。 整数Nが与えられ、その位置までのイッカノビフ数をすべて出力することが課題となります。イッカノビフ数はフィボナッチ数と非常によく似た数列ですが、決定的な違いがひとつあります。それは、直前の2つの数を加算する前に、それぞれの桁を反転(逆順)させるという点です。 アルゴリズムの流れ 数列は0と1から始まります。 3項目以降は、「直前の2つの数の桁をそれぞれ反転した値の和」を新しい項として追加します。 例えば、13の次の項は reverse(8) + reverse(13) = 8
-
【C++】配列内のすべての素数の積を求める方法
整数型配列 arr[] が与えられたとき、その配列に含まれるすべての素数を見つけ出し、それらの積を計算するのが本記事のテーマです。素数とは、1とその数自身でしか割り切れない正の整数のことです。たとえば、2、3、5、7、11などが素数に該当します。それでは、次の配列を例に解を求めてみましょう。入力: arr[] = { 11, 20, 31, 4, 5, 6, 70 }出力: 1705説明: 配列内の素数は 11、31、5 の3つであり、その積は 11 × 31 × 5 = 1705 となります。入力: arr[] = { 1, 2, 3, 4, 5, 6, 7 }出力: 210説明: 配列内の