使用 k 位數字計算幸運數數目的 C++ 程式碼


假設我們有一個包含 n 個元素的陣列 A,以及另一個數字 x。眾所周知,幸運數字是僅包含幸運數字 4 和 7 的十進位制數字。從給定的 n 個正整數中,我們必須計算其中有多少個數字不超過 k 個幸運數字?

因此,如果輸入為 A = [44, 74, 474, 154]; k = 2,則輸出為 3,因為有三個幸運數字 44、74 和 474,但 474 有三個幸運數字,這比 k 多。此外,154 有一個幸運數字,這是可以接受的。

步驟

要解決此問題,我們將遵循以下步驟 -

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

更新於: 15-Mar-2022

876 次瀏覽

開啟你的 職業

完成課程獲得認證

入門
廣告