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

C++の等比数列で不足している数を見つけます


等比数列の要素を順番に表す配列があるとします。 1つの要素が欠落しています。不足している要素を見つける必要があります。したがって、arr =[1、3、27、81]の場合、9が欠落しているため、出力は9になります。

二分探索を使用して、この問題を解決できます。真ん中の要素に行き、真ん中と真ん中の隣の比率が一般的な比率と同じであるかどうかを確認します。そうでない場合は、インデックスmidとmid+1の間に欠落している要素が存在します。真ん中の要素がGPのn/2番目の要素である場合、欠落している要素は右半分にあり、そうでない場合は左半分にあります。

#include <iostream>
#include <cmath>
using namespace std;
class Progression {
   public:
   int missingUtil(int arr[], int left, int right, int ratio) {
      if (right <= left)
         return INT_MAX;
      int mid = left + (right - left) / 2;
      if (arr[mid + 1] - arr[mid] != ratio)
         return (arr[mid] * ratio);
      if (mid > 0 && arr[mid] / arr[mid - 1] != ratio)
         return (arr[mid - 1] * ratio);
      if (arr[mid] == arr[0] * pow(ratio, mid))
         return missingUtil(arr, mid + 1, right, ratio);
         return missingUtil(arr, left, mid - 1, ratio);
   }
   int missingElement(int arr[], int n) {
      int ratio = pow(arr[n-1]/arr[0], 1.0/n);
         return missingUtil(arr, 0, n - 1, ratio);
   }
};
int main() {
   Progression pg;
   int arr[] = {1, 3, 27, 81};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << "The missing element is: " << pg.missingElement(arr, n);
}

出力

The missing element is: 9

  1. C++で数値を除算する数値の桁数を検索します

    番号が与えられていると仮定します。数を均等に分割する数の桁数を数える必要があります。数値が1012で、結果が3であるとします。1012を均等に分割する3桁の1、1、および2があります。 これを解決するために、モジュラス演算を使用して数値の各桁を見つけ、数値がその桁で割り切れるかどうかを確認します。割り切れる場合は、カウンターを増やします。数字が0の場合は、その数字を無視します。 例 #include<iostream> using namespace std;    int countDivDigit(int num) {    int c

  2. C ++を使用して、配列内の数値の頻度を見つけます。

    配列があるとします。 n個の異なる要素があります。配列内の1つの要素の頻度を確認する必要があります。 A =[5、12、26、5、3、4、15、5、8、4]とすると、5の頻度を見つけようとすると、3になります。 これを解決するために、左から配列をスキャンします。要素が指定された数と同じである場合は、カウンターを増やします。それ以外の場合は、配列がなくなるまで次の要素に進みます。 例 #include<iostream> using namespace std; int countElementInArr(int arr[], int n, int e) {   &nbs