Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

จำนวนที่เป็นไปได้ทั้งหมดของตัวเลข N และฐาน B โดยไม่มีศูนย์นำหน้า?


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