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