Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

k 자리의 행운의 숫자를 계산하는 C++ 코드

<시간/>

n개의 요소가 있는 배열 A와 또 다른 숫자 x가 있다고 가정합니다. 우리는 행운의 숫자가 10진수 표현에 행운의 숫자 4와 7만 포함된 양수라는 것을 알고 있습니다. 주어진 n개의 양의 정수를 형성하십시오. 그 중 k개 이하의 행운의 숫자가 몇 개나 있는지 세어야 합니까?

따라서 입력이 A =[44, 74, 474, 154]와 같으면; k =2이면 3개의 행운의 숫자 44, 74, 474가 있지만 474는 k보다 큰 3개의 행운의 숫자가 있기 때문에 출력은 3이 됩니다. 또한 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