เราจะเห็นปัญหาหนึ่งข้อ เรามี N และฐาน B หน้าที่ของเราคือนับตัวเลข N ทั้งหมดของฐาน B โดยไม่มี 0 นำหน้า ดังนั้นถ้า N คือ 2 และ B เป็น 2 จะมีตัวเลขสี่ตัว 00, 01, 10, 11 ดังนั้นมีเพียงสองตัวเท่านั้นที่ใช้ได้สำหรับส่วนนี้ เหล่านี้คือ 10, 11 ไม่มี 0 นำหน้า
หากฐานเป็น B แสดงว่ามี 0 ถึง B - 1 หลักที่แตกต่างกัน ดังนั้น B N สามารถสร้างจำนวนค่า N หลักที่แตกต่างกันได้ (รวมถึง 0 นำหน้า) หลักแรกคือ 0m ถ้าเราละเว้นมี B N-1 ตัวเลข. ดังนั้นจำนวน N หลักทั้งหมดที่ไม่มี 0 นำหน้าคือ B N – B N-1
อัลกอริทึม
จำนวนนับ(N, B)
Begin total := BN with_zero := BN-1 return BN – BN-1 End
ตัวอย่าง
#include <iostream> #include <cmath> using namespace std; int countNDigitNum(int N, int B) { int total = pow(B, N); int with_zero = pow(B, N - 1); return total - with_zero; } int main() { int N = 5; int B = 8; cout << "Number of values: " << countNDigitNum(N, B); }
ผลลัพธ์
Number of values: 28672