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