给定整数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