C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で連続する数の合計として数を表現する方法を数える


入力として整数nを指定します。目標は、「num」を2つ以上の連続する自然数の合計として表すことができる方法の数を見つけることです。たとえば、nが3の場合、合計(1 + 2)として表すことができるため、合計は1ウェイです。

入力

num=6

出力

Count of ways to express a number as sum of consecutive numbers are: 1

説明

The ways in which we can express ‘num’ as sum of consecutive natural
numbers: 1+2+3

入力

num=19

出力

Count of ways to express a number as sum of consecutive numbers are: 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への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<<"Count of ways to express a number as sum of consecutive numbers are: "<<sum_consecutive(num) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of ways to express a number as sum of consecutive numbers are: 1

  1. C++でセットをk個のサブセットに分割する方法の数を数えます

    与えられた2つの数字eとp。目標は、セットのe個の要素をp個のパーティション/サブセットに分割できる方法の数を数えることです。 例 入力 e=4 p=2 出力 Count of number of ways to partition a set into k subsets are: 7 説明 If elements are: a b c d then ways to divide them into 2 partitions are: (a,b,c)−(d), (a,b)−(c,d), (a,b,c)−(d), (a)−(b,c,d), (

  2. 数値がC++で2つの三角数の合計として表現できるかどうかを確認します

    このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #