Giả sử chúng ta có một mảng A với n phần tử, và một số khác x. Chúng ta biết các số may mắn là các số dương mà biểu diễn thập phân chỉ chứa các chữ số may mắn 4 và 7. Tạo thành n số nguyên dương đã cho. Chúng ta phải đếm xem trong số đó có bao nhiêu chữ số may mắn không quá k?
Vì vậy, nếu đầu vào là A =[44, 74, 474, 154]; k =2, thì kết quả sẽ là 3, vì có ba số may mắn là 44, 74 và 474 nhưng 474 có ba chữ số may mắn hơn k. Ngoài ra 154 có một chữ số may mắn có thể chấp nhận được.
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
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
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#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; }
Đầu vào
{44, 74, 474, 154}, 2
Đầu ra
3