ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ค้นหาจำนวนวิธีที่จะแสดงจำนวนเต็มเป็นผลรวมของยกกำลังที่ 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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น