【C++】入力した数値がラッキーナンバーかどうかを判定するプログラム(すべての桁が異なる数字)
数値が与えられたとき、その数値がラッキーナンバーかどうかを判定し、結果を表示するのが本記事の目的です。
ラッキーナンバーとは
ラッキーナンバーとは、すべての桁の数字が互いに異なる数のことです。もし1つでも同じ数字が繰り返して現れる場合、その数はラッキーナンバーとはみなされません。
例
入力 -: n = 1234 出力 -: ラッキーナンバーです 説明 -: 数値nには繰り返し現れる数字がないため、ラッキーナンバーです 入力 -: n = 3434 出力 -: ラッキーナンバーではありません 説明 -: 数値nでは3と4がそれぞれ2回現れているため、ラッキーナンバーではありません
本プログラムで採用するアプローチは以下の通りです −
- ラッキーナンバーかどうかを判定するため、ユーザーから数値nを入力として受け取ります
- 数値の桁数分だけ、すべての桁を先頭から順に走査します
- 各桁にアクセスするたびに「訪問済み」としてマークし、その数字がすでに出現していないかを確認します
- 与えられた数値がラッキーナンバーであるかどうかの結果を表示します
アルゴリズム
開始
Step1-> 与えられた数値がラッキーかどうかを判定する関数を宣言
bool check_lucky(int size)
bool型の配列 arr[10] を宣言
Loop For int i=0 かつ i<10 かつ i++
arr[i] = false を設定
End
Loop While(size > 0)
int digit = size % 10 を宣言
IF (arr[digit])
return false
End
arr[digit] = true を設定
size = size / 10 を設定
End
return true
Step 2-> main() 内で
int arr[] = {0,34,2345,1249,1232} を宣言
int size = sizeof(arr)/sizeof(arr[0]) を計算
Loop For int i=0 かつ i<size かつ i++
check_lucky(arr[i]) ?
「〜 is Lucky」を出力 : 「〜 is not Lucky」を出力
End
終了
サンプルコード
#include<iostream>
using namespace std;
// ラッキーな数値であればtrueを返す。
bool check_lucky(int size) {
bool arr[10];
for (int i=0; i<10; i++)
arr[i] = false;
while (size > 0) {
int digit = size % 10;
if (arr[digit])
return false;
arr[digit] = true;
size = size/10;
}
return true;
}
int main() {
int arr[] = {0,34,2345,1249,1232};
int size = sizeof(arr)/sizeof(arr[0]);
for (int i=0; i<size; i++)
check_lucky(arr[i])? cout << arr[i] << " is Lucky \n": cout << arr[i] << " is not Lucky \n";
return 0;
}
出力結果
0 is Lucky 34 is Lucky 2345 is Lucky 1249 is Lucky 1232 is not Lucky
-
数値のすべての桁がその数を割り切れるかどうかを判定するJavaプログラム
ある数値のすべての桁が、その数値自身を割り切れるかどうかを確認する方法は、プログラミングの基礎的な問題の一つです。ここでは、Javaを使ってこの判定を行うコードを紹介します。 サンプルコード 0){ int digit = val % 10; if ((divisibility_check(val, digit)) == false) return false; temp /= 10; } return true; } public static
-
Pythonで数値のすべての桁がその数自身を割り切るかどうかを判定する方法
はじめにこの記事では、与えられた問題に対する解法とアプローチについて学びます。具体的には、「ある整数のすべての桁が、その整数自身を割り切るかどうか」をPythonで判定する方法を解説します。問題文問題: 数値 n が与えられたとき、n のすべての桁が n を割り切るかどうかを判定してください。考慮すべきポイントまず、入力された数値に 0 が含まれていないかを確認する必要があります。0 で割ろうとするとゼロ除算例外(ZeroDivisionError)が発生するため、0 が含まれる場合は答えとして「No」を返さなければなりません。それ以外の場合は、一時変数 flag を用いて判定条件を宣言し、す