Computer >> Máy Tính >  >> Lập trình >> lập trình C

Tổng của tất cả các tập hợp con của một tập hợp được tạo thành bởi n số tự nhiên đầu tiên

Tập hợp là một tập hợp các phần tử dữ liệu. Tập hợp con của một tập hợp là tập hợp chỉ được tạo thành bởi các phần tử sau tập hợp cha. ví dụ:B là A tập hợp con của a nếu tất cả các phần tử của B tồn tại trong A.

Ở đây chúng ta cần tìm tổng của tất cả các tập con của một tập hợp được tìm thấy bởi n số tự nhiên đầu tiên. điều này có nghĩa là tôi cần tìm tất cả các tập hợp con có thể được hình thành và sau đó thêm chúng. Hãy lấy một ví dụ,

N =3

Đặt ={1,2,3}

các tập con được tạo thành ={{1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3,}}

Tính tổng =1 + 1 + 2 + 1 + 3 + 2 + 2 + 3 + 3 + 1 + 2 + 3 =24

Hãy sắp xếp lại tổng, 1 + 1 + 1 + 1 + 2 + 2 + 2 + 2 + 3 + 3 + 3 =4 (1 + 2 + 3) =24

Tồn tại một công thức toán học cho loại chuỗi này, Công thức chung của chuỗi là 2 ^ n * (n ^ 2 + n + 2) - 1.

Ví dụ

#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;
}

Đầu ra

The sim of the series is 2815