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

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

  1. C指定された数値の桁を1つのステートメントで合計するプログラム

    このセクションでは、複数のステートメントを記述せずに桁の合計を見つける方法を説明します。言い換えれば、1つのステートメントで数字の合計を見つけることができます。 ご存知のように、桁の合計を求めるには、数値を10で割った後の余りを取り、最後の桁を切り取り、数値が0になるまで何度も10で除算します。 これらのタスクを1つのステートメントで実行するには、forループを使用できます。ご存知のとおり、forループには3つの異なるセクションがあります。この場合、初期化フェーズでは何もしていません。次に、条件チェックフェーズでは、数値が0より大きいかどうかをチェックしています。インクリメントデクリメント

  2. 指定された数値の桁を合計する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;