เราต้องหาจำนวนหลักในหลักที่ 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