在C ++中从前N个自然数之和得出的D的可能差为D
在这个问题中,我们给了两个整数N和D。我们的任务是检查是否有可能必须从具有D差的前N个自然数的集合中进行设置。
让我们举个例子来了解这个问题,
输入 -N=5D=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
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短