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

แรก N ธรรมชาติสามารถแบ่งออกเป็นสองชุดโดยมีความแตกต่างที่กำหนดและผลรวม co-prime ใน C ++


ในบทช่วยสอนนี้ เราต้องค้นหาว่าจำนวนธรรมชาติจาก 1 ถึง n แบ่งออกเป็นสองส่วนหรือไม่ ต้องเป็นไปตามเงื่อนไขต่อไปนี้

  • ความแตกต่างที่แน่นอนระหว่างผลรวมอนุกรมทั้งสองควรเป็น m

  • และ GCD ของผลรวมทั้งสองควรเป็น 1 นั่นคือ co-primes

ผลบวกของจำนวนธรรมชาติ n ตัวแรกคือ (n*(n+1))/2เราสามารถหา sumOne และ sumTwo ได้เนื่องจากเรามีผลรวมและส่วนต่างทั้งหมด m ดูสมการด้านล่าง

sumOne + sumTwo = (n*(n+1))/2
sumOne - sumTwo = m

ตัวอย่าง

ตรวจสอบว่าผลรวมสัมบูรณ์เท่ากับ m หรือไม่ แล้วตรวจสอบ GCD

#include <bits/stdc++.h>
using namespace std;
bool canSplitIntoTwoHalves(int n, int m) {
   int total_sum = (n * (n + 1)) / 2;
   int sumOne = (total_sum + m) / 2;
   int sumTwo = total_sum - sumOne;
   if (total_sum < m) {
      return false;
   }
   if (sumOne + sumTwo == total_sum &&sumOne - sumTwo == m) {
      return (__gcd(sumOne, sumTwo) == 1);
   }
   return false;
}
int main() {
   int n = 10, m = 17;
   if (canSplitIntoTwoHalves(n, m)) {
      cout << "Can split";
   }
   else {
      cout << "Can't split";
   }
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

Can split

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น