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

นับคู่ (a, b) ที่ผลรวมของลูกบาศก์เป็น N (a^3 + b^3 =N) ใน C++


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