Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ นับจำนวนเลขลัคกี้ที่มีตัวเลขลัคกี้ไม่เกิน k ตัว

สมมติว่าเรามีอาร์เรย์ A ขนาด n และตัวเลข x เลขลัคกี้คือจำนวนบวกที่ตัวเลขทศนิยมประกอบด้วย 4 และ 7 เท่านั้น จาก n จำนวนเต็มบวกที่กำหนด ต้องนับว่ามีกี่จำนวนที่มีตัวเลขลัคกี้ไม่เกิน k ตัว

เช่น ถ้าอินพุตคือ A = [44, 74, 474, 154]; k = 2 เอาต์พุตจะเป็น 3 เพราะมีเลขลัคกี้ 44, 74, 474 แต่ 474 มีตัวลัคกี้ 3 ตัวเกิน k และ 154 มี 1 ตัวผ่าน

ขั้นตอนการแก้ปัญหา

n := ขนาดของ A
f := 0
for i := 0 ถึง n-1:
    c := 0
    while A[i] != 0:
        if A[i] mod 10 == 4 หรือ 7: เพิ่ม c ขึ้น 1
        A[i] := A[i] / 10
    if c <= k: เพิ่ม f ขึ้น 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