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

最初のn個の自然数によって形成されたセットのすべてのサブセットの合計


セットは、データ要素のコレクションです。セットのサブセットは、親セットの後の要素のみによって形成されるセットです。たとえば、Bのすべての要素がAに存在する場合、Bはaのサブセットです。

ここでは、最初のn個の自然数によって見つかったセットのすべてのサブセットの合計を見つける必要があります。これは、形成できるすべてのサブセットを見つけて、それらを追加する必要があることを意味します。例を見てみましょう

N =3

セット={1,2,3}

形成されたサブセット={{1}、{2}、{3}、{1,2}、{1,3}、{1,3}、{1,2,3、}}

合計=1+ 1 + 2 + 1 + 3 + 2 + 2 + 3 + 3 + 1 + 2 + 3 =24

合計を並べ替えましょう、1 + 1 + 1 + 1 + 2 + 2 + 2 + 2 + 3 + 3 + 3 =4(1 + 2 + 3)=24

このタイプの級数には数式があります。級数の一般式は2^n *(n ^ 2 + n + 2)–1です。

#include <stdio.h>
#define mod (int)(1e9 + 7)
int power(int x, int y) {
   int res = 1;
   x = x % mod;
   while (y > 0) {
      if (y & 1)
         res = (res * x) % mod;
         y = y >> 1;
         x = (x * x) % mod;
   }
   return res;
}
int main() {
   int n = 45;
   n--;
   int ans = n * n;
   if (ans >= mod)
      ans %= mod;
      ans += n + 2;
   if (ans >= mod)
      ans %= mod;
      ans = (power(2, n) % mod * ans % mod) % mod;
      ans = (ans - 1 + mod) % mod;
   printf("The sum of the series is %d \n", ans);
   return 0;
}

出力

The sim of the series is 2815

  1. C最初のn個の自然数の立方和のプログラム?

    この問題では、最初のn個の自然数の立方体の合計を取得する方法を確認します。ここでは、1からnまで実行されるforループを使用しています。各ステップで、項の3乗を計算し、それを合計に追加します。このプログラムは、完了するまでにO(n)時間かかります。しかし、これをO(1)または一定時間で解きたい場合は、この級数式-を使用できます。 アルゴリズム cubeNNatural(n) begin    sum := 0    for i in range 1 to n, do       sum := sum + i^3 &n

  2. 最初のn個の自然数の二乗和のためのC++プログラム?

    この問題では、最初のn個の自然数の2乗の合計を取得する方法を確認します。ここでは、1からnまで実行されるforループを使用しています。各ステップで、項の2乗を計算し、それを合計に追加します。このプログラムは、完了するまでにO(n)時間かかります。しかし、これをO(1)または一定時間で解きたい場合は、この級数式-を使用できます。 アルゴリズム squareNNatural(n) begin    sum := 0    for i in range 1 to n, do       sum := sum + i^2 &