C++で数値内のすべての0を5に置き換えるプログラムの作成方法
問題の概要
整数 N が与えられたとき、その数に含まれるすべての「0」を「5」に置き換えることを考えます。ただし、先頭にある「0」は有効な桁として扱われないため、置き換えの対象外とします。
入力例 1
N = 1007
出力
1557
解説: 与えられた数には 2 つの「0」が含まれており、それぞれを「5」に置き換えると 1557 になります。
入力例 2
N = 00105
出力
155
解説: 先頭の「0」は無視されるため、実際に処理されるのは 105 です。中央の「0」を「5」に置き換えると、出力は 155 になります。
この問題を解くアプローチ
与えられた数のすべての「0」を「5」に置き換えるには、数の末尾の桁(下一桁)を順番に取り出して調べる方法が有効です。取り出した桁が「0」であれば「5」に置き換え、残りの桁に対して同じ処理を繰り返します。先頭の「0」は処理対象から除外します。
この問題は再帰を使うことで簡潔に解くことができます。まず現在の数の末尾の桁を取り出し、10 で割った残りの数に対して同じ関数を再帰的に呼び出すことで、すべての桁を順に処理していきます。
アルゴリズムの手順
- 数値 N を入力として受け取ります。
- 整数型の関数 convertToFive(int N) は、数値を引数として受け取り、すべての「0」を「5」に置き換えた結果を返します。
- ベースケースとして、N が 0 の場合は 0 を返します。それ以外の場合は、N の末尾の桁を取り出して判定します。
- 末尾の桁が「0」であれば、その値を「5」に置き換えます。
- N を 10 で割った値に対して再帰的に関数を呼び出し、その戻り値に 10 を掛けます。
- 最後に、取り出しておいた末尾の桁を加算した値を返します。
C++での実装例
#include <bits/stdc++.h>
using namespace std;
int convertToFive(int N) {
if(N==0){
return 0;
}
int last_digit= N%10;
if(last_digit==0)
last_digit=5;
return convertToFive(N/10)*10 +last_digit;
}
int main() {
int N= 14006;
cout << convertToFive(N) << endl;
}実行結果
上記のコードを実行すると、次の出力が得られます。
14556
入力された数 14006 には 2 つの「0」が含まれているため、それらを「5」に置き換えた結果として 14556 が出力されます。
-
C++で数値の各桁の合計を計算するプログラム
ここでは、C++言語を使用して入力された整数の各桁の合計を計算する方法を紹介します。剰余演算子と整数除算を組み合わせたシンプルなアルゴリズムで実装できます。 プログラム例 #include<iostream> using namespace std; int main() { int x, s = 0; cout << Enter the number : ; cin >> x; while (x != 0) {
-
Pythonで数値内のすべての0を5に置き換えるプログラムを作成する方法
整数 N が与えられたとき、その数値に含まれるすべての「0」を「5」に置き換えることが課題です。ただし、先頭にある「0」は有効な桁として扱われないため、置き換えの対象から除外されます。それでは、具体的な例を見てみましょう。 入力例1 N = 1007 出力 1557 解説: 与えられた数値には2つの「0」が含まれており、これらを「5」に置き換えると「1557」になります。 入力例2 N = 00105 出力 155 解説: 先頭の「0」は無視され、中央の「0」を「5」に置き換えることで「155」という出力が得られます。 この問題を解くためのアプローチ 数値内のすべての「0」を「5」に置き換える