เราต้องหาจำนวนหลักในหลักที่ n ของตัวเลข 4 หลักที่กำหนดให้ 1, 2, 3 และ 4
ชุดเลขสี่ตัวบนมีดังนี้
1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24...
เราจำเป็นต้องหาจำนวนหลักของตัวเลขที่ n จากชุดข้อมูลข้างต้น หากคุณสังเกตรูปแบบอย่างระมัดระวัง คุณจะพบประเด็นต่อไปนี้
-
มี 4 ตัว หลัก 1
-
มีตัวเลข 16 หลัก 2 หลัก
-
รูปแบบยังคงดำเนินต่อไปตามกำลังของ 4
มาดูตัวอย่างกัน
ป้อนข้อมูล
7
ผลผลิต
2
ตัวเลขที่ 7 ในซีรีส์คือ 13 และจำนวนหลักในมันคือ 2
อัลกอริทึม
- เริ่มต้นหมายเลข n.
- เริ่มต้นตัวแปรสองตัว ตัวหนึ่งเพื่อเก็บผลลัพธ์ และอีกตัวหนึ่งเพื่อเก็บผลรวมของตัวเลขในชุดข้อมูล
- สร้างลูปที่เพิ่มตัวแปรการวนซ้ำโดยยกกำลัง 4
- เพิ่มตัวเลขปัจจุบันให้กับตัวแปรผลรวม
- ถ้าผลรวมมากกว่า n ให้ตัดลูปออก
- บวก 1 เข้ากับผลลัพธ์เนื่องจากชุดตัวเลขถัดไปจะมีตัวเลขมากกว่าชุดก่อนหน้า 1 หลัก
- ส่งคืนผลลัพธ์
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
#include <bits/stdc++.h> using namespace std; int getDigitsCount(int n) { int i, result = 1, sum = 0; for (i = 4; ; i *= 4) { sum += i; if (sum >= n) { break; } result += 1; } return result; } int main() { int n = 57; cout << getDigitsCount(n) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
3