เราจะเห็นปัญหาหนึ่งข้อ เรามี 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