เราได้รับตัวเลข 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