给定整数n作为输入。目的是找到将“ num”表示为两个或多个连续自然数之和的方式数量。例如,如果n为3,则可以表示为和(1 + 2),因此总计为1。
例如
num=6输出结果
将数字表示为连续数字的总和的方法有: 1
The ways in which we can express ‘num’ as sum of consecutive natural numbers: 1+2+3
num=19输出结果
将数字表示为连续数字的总和的方法有: 1
The ways in which we can express ‘num’ as sum of consecutive natural numbers: 9+10
以下程序中使用的方法如下-
在这种方法中,我们将数字表示为(a + a + 1 + a + 2….. + a + i)的总和。
变成(a)(L + 1)次+ 1 + 2 + 3 + 4…+ i = a *(i + 1)+ i *(i + 1)/ 2。(i个自然数的总和)num = a *(i + 1)+ i *(i + 1)/2.a= [num-(i)*(i + 1)/ 2] /(i + 1)
我们将对i = 1到i *(i + 1)/ 2小于num进行此操作。
以整数num作为输入。
功能 sum_consecutive(int num) 接受一个num并返回将“ num”表示为连续自然数之和的方式计数。
将初始计数设为0。
将临时变量res用作float。
使用从i = 1到i *(i + 1)/ 2 <num的for循环遍历。
计算值[num-(i)*(i + 1)/ 2] /(i + 1)并存储在res中。
如果res为整数(res-(int)res为0),则递增计数。
最后,我们将num表示为连续自然数之和的方式。
返回计数作为结果。
#include <bits/stdc++.h>
using namespace std;
int sum_consecutive(int num){
int count = 0;
int temp = num * 2;
float res;
for (int i = 1; i * (i + 1) < temp; i++){
int store = i + 1;
res = (1.0 * num−(i * (i + 1)) / 2) / store;
float check = res − (int)res;
if(check == 0.0){
count++;
}
}
return count;
}
int main(){
int num = 20;
cout<<"将数字表示为连续数字的总和的方法有: "<<sum_consecutive(num) << endl;
return 0;
}输出结果如果我们运行上面的代码,它将生成以下输出-
将数字表示为连续数字的总和的方法有: 1