📌  相关文章
📜  求出x(x + y)+ x ^ 2(x ^ 2 + y ^ 2)+ x ^ 3(x ^ 3 + y ^ 3)+…+ x ^ n(x ^ n + y ^ n)

📅  最后修改于: 2021-04-23 18:21:49             🧑  作者: Mango

给定一系列x(x+y)+x^{2}(x^{2}+y^{2})+...+x^{n}(x^{n}+y^{n})  其中x,y和n为整数值。任务是找到直到给定级数的第n个项的和。
例子:

Input: x = 2, y = 2, n = 2
Output: 40

Input: x = 2, y = 4, n = 2
Output: 92

方法:给定系列为:
S=x(x+y)+x^{2}(x^{2}+y^{2})+x^{3}(x^{3}+y^{3})+...+x^{n}(x^{n}+y^{n})
=(x^{2}+xy)+(x^{4}+x^{2}y^{2})++(x^{6}+x^{3}y^{3})+...++(x^{2n}+x^{n}y^{n})
=(x^{2}+x^{4}+x^{6}+...+x^{2n})+(xy+x^{2}y^{2}+x^{3}y^{3}+...+x^{n}y^{n})
=(\frac{x^{2}((x^{2})^{n}-1)}{x^{2}-1})+(\frac{xy(x^{n}y^{n}-1)}{xy-1})
因此,我们的问题减少到寻找两个GP系列之和。
下面是上述方法的实现:

C++
// CPP program to find the sum of series
#include 
using namespace std;
 
// Function to return required sum
int sum(int x, int y, int n)
{
 
    // sum of first series
    int sum1 = (pow(x, 2) * (pow(x, 2 * n) - 1))
               / (pow(x, 2) - 1);
 
    // sum of second series
    int sum2 = (x * y * (pow(x, n) * pow(y, n) - 1))
               / (x * y - 1);
 
    return sum1 + sum2;
}
 
// Driver Code
int main()
{
    int x = 2, y = 2, n = 2;
 
    // function call to print sum
    cout << sum(x, y, n);
    return 0;
}


Java
// Java program to find the sum of series
 
public class GFG {
     
    // Function to return required sum
    static int sum(int x, int y, int n)
    {
     
        // sum of first series
        int sum1 = (int) (( Math.pow(x, 2) * (Math.pow(x, 2 * n) - 1))
                   / (Math.pow(x, 2) - 1));
     
        // sum of second series
        int sum2 = (int) ((x * y * (Math.pow(x, n) * Math.pow(y, n) - 1))
                    / (x * y - 1));
     
        return sum1 + sum2;
    }
     
    // Driver code
    public static void main (String args[]){
        int x = 2, y = 2, n = 2;
         
        // function call to print sum
        System.out.println(sum(x, y, n));
    }
 
// This code is contributed by ANKITRAI1
}


Python3
# Python3 program to find the sum of series
# Function to return required sum
 
def sum(x,y,n):
     
    # sum of first series
    sum1 = ((x**2)*(x**(2*n)-1))//(x**2 - 1)
     
    # sum of second series
    sum2 = (x*y*(x**n*y**n-1))//(x*y-1)
    return (sum1+sum2)
     
# Driver Code
if __name__=='__main__':
    x = 2
    y = 2
    n = 2
# function call to print sum
    print(sum(x, y, n))
     
# this code is contributed by sahilshelangia


C#
// C# program to find the sum of series
using System;
 
class GFG
{
 
// Function to return required sum
static int sum(int x, int y, int n)
{
 
    // sum of first series
    int sum1 = (int) ((Math.Pow(x, 2) *
                      (Math.Pow(x, 2 * n) - 1)) /
                      (Math.Pow(x, 2) - 1));
 
    // sum of second series
    int sum2 = (int) ((x * y * (Math.Pow(x, n) *
                Math.Pow(y, n) - 1)) / (x * y - 1));
 
    return sum1 + sum2;
}
 
// Driver code
public static void Main ()
{
    int x = 2, y = 2, n = 2;
     
    // function call to print sum
    Console.Write(sum(x, y, n));
}
}
 
// This code is contributed by ChitraNayal


PHP


Javascript


输出:
40

时间复杂度: O(log(n))