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

เป็นไปได้สองชุดจากความแตกต่างของจำนวนธรรมชาติ N ตัวแรกของผลรวมเป็น D ใน C ++


ในปัญหานี้ เราได้จำนวนเต็ม N และ D สองจำนวน หน้าที่ของเราคือตรวจสอบว่าเป็นไปได้หรือไม่ที่จะต้องตั้งค่าจากเซตของจำนวนธรรมชาติ N ตัวแรกที่มีความแตกต่างของ D

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล − N=5 D =3

ผลผลิต - ใช่

คำอธิบาย

Out of 1, 2, 3, 4, 5.
We can have two sets set1= {1, 2, 3} and set2 = {4, 5}, this will give difference 3.
{4+5} - {1+2+3} = 9- 6 = 3

สำหรับการแก้ปัญหานี้ เราจะมีการคำนวณทางคณิตศาสตร์บางอย่าง

เรารู้ว่าผลรวมของจำนวนทั้งหมดคือผลรวมขององค์ประกอบของสองเซตคือ

ผลรวมของสูตรจำนวนธรรมชาติ n

sum(s1) + sum(s2) = (n*(n+1))/2. Given in the problem, sum(s1) - sum(s2) = D

เพิ่มทั้งสองเราได้รับ

2*sum(s1) = ((n*(n+1))/2) + D

หากเงื่อนไขนี้เป็นจริง แสดงว่ามีวิธีแก้ปัญหาเท่านั้น

ตัวอย่าง

โปรแกรมแสดงการใช้งานโซลูชันของเรา

#include <iostream>
using namespace std;
bool isSetPossible(int N, int D) {
   int set = (N * (N + 1)) / 2 + D;
   return (set % 2 == 0);
}
int main() {
   int N = 10;
   int D = 7;
   cout<<"Creating two set from first "<<N<<" natural number with difference "<<D<<" is ";
   isSetPossible(N, D)?cout<<"possible":cout<<"not possible";
   return 0;
}

ผลลัพธ์

Creating two set from first 10 natural number with difference 7 is possible