如何计算这个系列

时间:2017-11-03 16:58:16

标签: c++

#include <iostream>
#include <math.h>

using namespace std;

int fact(int number)
{
  unsigned long long int p = 1;
  if (number == 0) {
    return p;
  }
  for (int i = 1; number >= i; i++) {
    p = p * i;
  }
  return p;
}

int main()
{
  long long int  a, x, sum = 0, result;
  int  n ;
  cin >> a;
  cin >> x;
  cin >> n;
  for (int k = 0; n >= k; k++) {
    result = fact(n) / (fact(k) * fact(n - k));
    sum = sum + (result * pow(x, k) * pow(a, n - k));
  }
  cout << sum;
  return 0;
}

我想计算这个系列

The series

所以我考虑了long long int sum,但sum号有时会变得过大。如果不使用库,我该怎么做才能保存总和?

1 个答案:

答案 0 :(得分:0)

首先,我建议使用二项式定理 - 你计算的只是pow(x+a, n)

如果你想通过系列进行此操作,请不要使用阶乘计算二项式系数,但是这样的

int bin_coeff(int n, int k){
    int lim = k > n/2 ? k : n - k;
    int sum = 1;
    for (int i = n; i > lim; i--){
        sum *= i;
    }
    for (int i = 2; i < (n - lim + 1); i++){
        sum /= i;
    }
    return sum;
}