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

ค้นหาวิธีที่จำนวนเต็มสามารถแสดงเป็นผลรวมของกำลังที่ n ของจำนวนธรรมชาติที่ไม่ซ้ำกันใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ค้นหาจำนวนวิธีที่จะแสดงจำนวนเต็มเป็นผลรวมของยกกำลังที่ n ของจำนวนเฉพาะ

เรามี จำนวนจำนวนเต็มสองจำนวน และ พลัง . และเราต้องค้นหาว่าเราจะแสดง หมายเลขที่ให้มาได้กี่วิธี เป็นผลรวมของกำลัง n ของจำนวนธรรมชาติเฉพาะ มาดูตัวอย่างกัน

ป้อนข้อมูล − ตัวเลข =50 กำลัง =2

ผลผลิต − 3

มีทางเดียวเท่านั้นที่เราจะเขียน 4 เป็นผลรวมของ 2 ยกกำลังได้

เราจะใช้การเรียกซ้ำเพื่อแก้ปัญหา มาดูขั้นตอนการแก้ปัญหากัน

  • เริ่มต้นตัวเลขและกำลัง

  • เขียนฟังก์ชันเรียกซ้ำด้วยชื่อที่เหมาะสม รับ หมายเลข , พลัง และ ฉัน เป็นข้อโต้แย้ง

  • ถ้า หมายเลข น้อยกว่าศูนย์หรือ pow(i, power) มากกว่า จำนวน แล้วคืนค่า 0

  • หากตัวเลขเป็นศูนย์หรือ pow(i, กำลัง) เท่ากับตัวเลข ให้คืนค่า 1

  • เรามีการเรียกซ้ำสองครั้งสำหรับฟังก์ชันเพื่อคำนวณจำนวนวิธีทั้งหมด

    • เพิ่มฉัน .

    • ในการโทรซ้ำครั้งแรก ให้ตรวจสอบหมายเลขที่น้อยกว่าหมายเลขที่กำหนด

    • ในการโทรซ้ำครั้งที่สอง ให้ตรวจสอบหมายเลขที่กำหนด

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
int findPossibleWaysCount(int number, int power, int i = 1) {
   if(number < 0 || number < pow(i, power)) {
      return 0;
   }
   if(number == 0 || number == pow(i, power)) {
      return 1;
   }
   return findPossibleWaysCount(number - pow(i, power), power, i + 1) + findPossibleWaysCount(number, power, i + 1);
}
int main() {
   // initializing the number and power
   int number = 50, power = 2;
   cout << findPossibleWaysCount(number, power) << endl;
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

3

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น