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

ค้นหาตำแหน่งของตัวเลขที่กำหนดระหว่างตัวเลขที่ทำจาก 4 และ 7 ใน C++


ในปัญหานี้เราได้รับหมายเลข N หน้าที่ของเราคือค้นหาตำแหน่งของตัวเลขที่กำหนดในตัวเลขที่ทำจาก 4 และ 7 ชุดที่ประกอบด้วย 4 และ 7 เท่านั้นคือ 4, 7, 44, 47, 74, 77, 444….

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

N = 5

ผลลัพธ์

74

คำอธิบาย

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

แนวทางการแก้ปัญหา

วิธีแก้ปัญหาง่ายๆ อยู่ที่การค้นหารูปแบบในชุดข้อมูล

ที่นี่ทุกตำแหน่งคู่มี 7 ในตอนท้าย

และทุกตำแหน่งคี่มี 4 ในตอนท้าย

ดังนั้น เราสามารถหาอนุกรมได้โดยการไปหลักต่อหลักและหาตำแหน่งตามหลักปัจจุบัน

หากตัวเลขปัจจุบันคือ 4 ตำแหน่งจะถูกอัปเดตเป็นตำแหน่ง =(ตำแหน่ง*2) + 1

หากตัวเลขปัจจุบันคือ 7 ตำแหน่งจะถูกอัปเดตเป็นตำแหน่ง =(ตำแหน่ง*2) + 2

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#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;
}

ผลลัพธ์

The position of the number in the series is 53