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

k桁のラッキーナンバーの数を数えるC++コード


n個の要素と別の数xを持つ配列Aがあるとします。ラッキーナンバーは正の数であり、その小数表現にはラッキー数字4と7のみが含まれていることがわかっています。指定されたn個の正の整数を形成します。ラッキーディジットがk以下の数を数える必要がありますか?

したがって、入力がA =[44、74、474、154]のような場合。 k =2の場合、出力は3になります。これは、ラッキー数44、74、および474が3つありますが、474にはkを超えるラッキー数字が3つあるためです。また、154には許容できる1桁の幸運な数字があります。

手順

これを解決するには、次の手順に従います-

n := size of A
f := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   c := 0
   while A[i] is not equal to 0, do:
      if A[i] mod 10 is same as 4 or A[i] mod 10 is same as 7, then:
         (increase c by 1)
      A[i] := A[i] / 10
   if c <= k, then:
      (increase f by 1)
return f

理解を深めるために、次の実装を見てみましょう-

#include<bits/stdc++.h>
using namespace std;
int solve(vector<int> A, int k){
   int n = A.size();
   int f = 0;
   for (int i = 0; i < n; ++i){
      int c = 0;
      while (A[i] != 0){
         if (A[i] % 10 == 4 || A[i] % 10 == 7)
            c++;
         A[i] /= 10;
      }
      if (c <= k)
         f++;
   }
   return f;
}
int main(){
   vector<int> A = {44, 74, 474, 154};
   int k = 2;
   cout << solve(A, k) << endl;
}

入力

{44, 74, 474, 154}, 2

出力

3

  1. C++でのみ3と8の数字の数値に変換します

    このチュートリアルでは、数値を3桁と8桁のみに変換するプログラムについて説明します。 このために、乱数が提供されます。私たちの仕事は、数字から1を足したり引いたりするか、数字の数字を任意の数字に変換することによって、その数字を3と8だけに変換することです。 例 #include <bits/stdc++.h> using namespace std; //calculating minimum operations required int cal_min(long long int num){    //calculating remainder and o

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

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