คำชี้แจงปัญหา
กำหนดจำนวนเต็มบวกสองจำนวน N และ X ภารกิจคือแสดง N เป็นผลรวมของยกกำลัง X (X0 + X1 +…..+ Xn) โดยที่จำนวนยกกำลังของ X ควรมีค่าน้อยที่สุด
พิมพ์จำนวนกำลังขั้นต่ำของ N ที่ใช้ทำผลรวมเท่ากับ N
ถ้า N =15 และ X =3 เราต้องการ 3 ยกกำลังของ '3' ดังนี้ −
15 =(3 2 + 3 1 + 3 1 )
อัลกอริทึม
ใช้สูตรด้านล่างเพื่อคำนวณผลลัพธ์สุดท้าย -
<ก่อน>1. ถ้า x =1 คำตอบจะเป็น n เท่านั้น (n =1 + 1 +…. n ครั้ง)s2 ตัวเลขใดๆ n สามารถแสดงเป็น n =x * a + b โดยที่ 0 −=b −=x-1 ตอนนี้เนื่องจาก b อยู่ระหว่าง 0 ถึง x – 1 ดังนั้น b ควรแสดงเป็นผลรวมของ x0 b ครั้งตัวอย่าง
#includeใช้เนมสเปซ std;int minNumOfPower (int n, int x){ if (x ==1) { return n; } ผลลัพธ์ int =0; ในขณะที่ (n> 0) { ผล =ผล + (n % x); n =n / x; } ส่งคืนผลลัพธ์;}int main(){ int n =15; int x =3; cout <<"จำนวนขั้นต่ำของอำนาจ =" < ผลลัพธ์
เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ต่อไปนี้ -
จำนวนพลังขั้นต่ำ =3