C++で指定された4桁で構成されるn番目の数字の桁数
与えられた4桁の1、2、3、4で構成されるn番目の数字の桁数を見つける必要があります。
上記の4桁のシリーズは次のとおりです
1、2、3、4、11、12、13、14、21、22、23、24 ...
上記のシリーズからn番目の数字の桁数を見つける必要があります。パターンを注意深く観察すると、次の点がわかります。
-
1桁の数字が4つあります。
-
2桁の数字が16個あります。
-
パターンは4の累乗として続きます。
例を見てみましょう
入力
7
出力
2
シリーズの7番目の数字は13で、その中の桁数は2です。
アルゴリズム
- 番号nを初期化します。
- 2つの変数を初期化して、1つは結果を保存し、もう1つはシリーズの数値の合計を保存します。
- 反復変数を4の累乗で増加させるループを作成します。
- 現在の数値を合計変数に追加します。
- 合計がnより大きい場合は、ループを解除します。
- 次の数値セットは前の数値セットより1桁余分になるため、結果に1を追加します。
- 結果を返します。
実装
以下は、C++での上記のアルゴリズムの実装です
#include <bits/stdc++.h> using namespace std; int getDigitsCount(int n) { int i, result = 1, sum = 0; for (i = 4; ; i *= 4) { sum += i; if (sum >= n) { break; } result += 1; } return result; } int main() { int n = 57; cout << getDigitsCount(n) << endl; return 0; }
出力
上記のコードを実行すると、次の結果が得られます。
3
-
C指定された数値の桁を1つのステートメントで合計するプログラム
このセクションでは、複数のステートメントを記述せずに桁の合計を見つける方法を説明します。言い換えれば、1つのステートメントで数字の合計を見つけることができます。 ご存知のように、桁の合計を求めるには、数値を10で割った後の余りを取り、最後の桁を切り取り、数値が0になるまで何度も10で除算します。 これらのタスクを1つのステートメントで実行するには、forループを使用できます。ご存知のとおり、forループには3つの異なるセクションがあります。この場合、初期化フェーズでは何もしていません。次に、条件チェックフェーズでは、数値が0より大きいかどうかをチェックしています。インクリメントデクリメント
-
指定された数値の桁を合計するC++プログラム
これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() { int x, s = 0; cout << "Enter the number : "; cin >> x; while (x != 0) { s = s + x % 10; x = x / 10;