Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm vị trí của số đã cho trong số các số được tạo thành từ 4 và 7 trong C ++

Trong bài toán này, chúng ta được cho một số N. Nhiệm vụ của chúng ta là Tìm vị trí của số đã cho trong số các số tạo bởi 4 và 7. Dãy chỉ gồm 4 và 7 là 4, 7, 44, 47, 74, 77, 444….

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

N = 5

Đầu ra

74

Giải thích

Series upto 5 terms is 4, 7, 44, 47, 74…

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản cho vấn đề là dựa trên việc tìm ra mẫu trong chuỗi.

Ở đây, mọi vị trí chẵn đều chứa 7 ở cuối cùng.

Và mỗi vị trí lẻ cuối cùng chứa 4.

Vì vậy, chúng ta có thể tìm chuỗi bằng cách đi từng chữ số và tìm vị trí dựa trên chữ số hiện tại.

Nếu chữ số hiện tại là 4, vị trí sẽ được cập nhật là vị trí =(vị trí * 2) + 1.

Nếu chữ số hiện tại là 7, vị trí sẽ được cập nhật là vị trí =(vị trí * 2) + 2.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#include <iostream>
using namespace std;
int findNumPosition(string num){
   int i = 0, position = 0;
   while (num[i] != '\0') {
      position *= 2;
      if(num[i] == '4')
         position += 1;
      else
         position += 2;
      i++;
   }
   return position;
}
int main() {
   string num = "74774";
   cout<<"The position of the number in the series is "<<findNumPosition(num);
   return 0;
}

Đầu ra

The position of the number in the series is 53