ในปัญหานี้เราได้รับหมายเลข 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