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

รหัส C++ นับเลขนำโชคด้วย k หลัก


สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n และอีกจำนวนหนึ่งคือ 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