เราได้รับตัวเลข N เป้าหมายคือการหาคู่ที่เรียงลำดับของจำนวนบวกซึ่งผลรวมของลูกบาศก์ของมันคือ N
เราจะทำสิ่งนี้โดยหาคำตอบของสมการ a 3 + b 3 =N โดยที่ a ไม่เกินรากที่สามของ N และ b สามารถคำนวณเป็นรากที่สามของ (N-a 3 )
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล
N=35
ผลผลิต
Count of pairs of (a,b) where a^3+b^3=N: 2
คำอธิบาย
Pairs will be (2,3) and (3,2). 23+33=8+27=35
ป้อนข้อมูล
N=100
ผลผลิต
Count of pairs of (a,b) where a^3+b^3=N: 0
คำอธิบาย
No such pairs possible.
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราหาจำนวนเต็ม N.
-
ฟังก์ชัน cubeSum(int n) รับ n และส่งกลับจำนวนคู่ที่เรียงลำดับด้วยผลรวมของลูกบาศก์เป็น n
-
ใช้ตัวแปรเริ่มต้นนับเป็น 0 สำหรับคู่
-
สำรวจโดยใช้ for loop เพื่อหา a.
-
เริ่มจาก a=1 ถึง a<=cbrt(n) ซึ่งเป็นคิวบ์รูทของ n.
-
คำนวณลูกบาศก์ของ b เป็น n-pow(a,3)
-
คำนวณ b เป็น cbrt(bcube)
-
ถ้า pow(b,3)==bcube. นับเพิ่มขึ้นทีละ 1
-
เมื่อสิ้นสุดการวนซ้ำทั้งหมดจะมีจำนวนคู่ดังกล่าวทั้งหมด
-
คืนค่าการนับเป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> #include <math.h> using namespace std; int cubeSum(int n){ int count = 0; for (int a = 1; a < cbrt(n); a++){ int bcube=n - (pow(a,3)); int b = cbrt(bcube); if(pow(b,3)==bcube) { count++; } } return count; } int main(){ int N = 35; cout <<"Count of pairs of (a,b) where a^3+b^3=N: "<<cubeSum(N); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of pairs of (a,b) where a^3+b^3=N: 2