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

ผลรวมของตัวเลขกำลังสองใน C++


สมมติว่าเรามีจำนวนเต็มที่ไม่เป็นลบ c เราต้องตัดสินใจว่ามีจำนวนเต็ม a และ b สองจำนวนที่ตรงกับ a^2 + b^2 =c หรือไม่

ดังนั้น หากอินพุตเท่ากับ 61 ผลลัพธ์จะเป็น True เนื่องจาก 61 =5^2 + 6^2

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน isPerfect() ซึ่งจะใช้เวลา x

  • sr :=รากที่สองของ x

  • คืนค่า true เมื่อ (sr - floor of sr) เป็น 0

  • จากวิธีหลักให้ทำดังนี้

  • ถ้า c เท่ากับ 0 แล้ว −

    • คืนความจริง

  • สำหรับการเริ่มต้น i :=0 เมื่อฉัน <เพดานของสแควร์รูทของ c ให้อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ -

    • b :=c - i * i

    • ถ้า isPerfect(b) เป็นจริง ดังนั้น −

      • คืนความจริง

  • คืนค่าเท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool isPerfect(int x){
      long double sr = sqrt(x);
      return ((sr - floor(sr)) == 0);
   }
   bool judgeSquareSum(int c) {
      if (c == 0)
         return true;
      int b;
      for (int i = 0; i < ceil(sqrt(c)); i++) {
         b = c - i * i;
         if (isPerfect(b))
            return true;
      }
      return false;
   }
};
main(){
   Solution ob;
   cout << (ob.judgeSquareSum(61));
}

อินพุต

61

ผลลัพธ์

1