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

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


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