Related Articles

# Find the sum of numbers from 1 to n excluding those which are powers of K

• Last Updated : 29 Apr, 2021

Given two integer N and K, the task is to find the sum of all the numbers from the range [1, N] excluding those which are powers of K.

Examples:

Input: N = 10, K = 3
Output: 42
2 + 4 + 5 + 6 + 7 + 8 + 10 = 42
1, 3 and 9 are excluded as they are powers of 3.
Input: N = 200, K = 30
Output: 20069

Approach: Find the sum of the following series:

1. pwrK: The sum of all the powers of K from [1, N] i.e. K0 + K1 + K2 + … + Kr such that Kr â‰¤ N
2. sumAll: The sum of all the integers from the range [1, N] i.e. (N * (N + 1)) / 2.

The result will be sumAll – pwrK
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;``#define ll long long int` `// Function to return the sum of all the``// powers of k from the range [1, n]``ll sumPowersK(ll n, ll k)``{` `    ``// To store the sum of the series``    ``ll sum = 0, num = 1;` `    ``// While current power of k <= n``    ``while` `(num <= n) {` `        ``// Add current power to the sum``        ``sum += num;` `        ``// Next power of k``        ``num *= k;``    ``}` `    ``// Return the sum of the series``    ``return` `sum;``}` `// Find to return the sum of the``// elements from the range [1, n]``// excluding those which are powers of k``ll getSum(ll n, ll k)``{``    ``// Sum of all the powers of k from [1, n]``    ``ll pwrK = sumPowersK(n, k);` `    ``// Sum of all the elements from [1, n]``    ``ll sumAll = (n * (n + 1)) / 2;` `    ``// Return the required sum``    ``return` `(sumAll - pwrK);``}` `// Driver code``int` `main()``{``    ``ll n = 10, k = 3;` `    ``cout << getSum(n, k);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``import` `java.io.*;` `class` `GFG``{` `// Function to return the sum of all the``// powers of k from the range [1, n]``static` `long` `sumPowersK(``long` `n, ``long` `k)``{` `    ``// To store the sum of the series``    ``long` `sum = ``0``, num = ``1``;` `    ``// While current power of k <= n``    ``while` `(num <= n)``    ``{` `        ``// Add current power to the sum``        ``sum += num;` `        ``// Next power of k``        ``num *= k;``    ``}` `    ``// Return the sum of the series``    ``return` `sum;``}` `// Find to return the sum of the``// elements from the range [1, n]``// excluding those which are powers of k``static` `long` `getSum(``long` `n, ``long` `k)``{``    ``// Sum of all the powers of k from [1, n]``    ``long` `pwrK = sumPowersK(n, k);` `    ``// Sum of all the elements from [1, n]``    ``long` `sumAll = (n * (n + ``1``)) / ``2``;` `    ``// Return the required sum``    ``return` `(sumAll - pwrK);``}` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``    ``{``        ``long` `n = ``10``, k = ``3``;``        ``System.out.println( getSum(n, k));` `    ``}``}` `// This code is contributed by anuj_67..`

## Python3

 `# Python3 implementation of the approach` `# Function to return the sum of all the``# powers of k from the range [1, n]``def` `sumPowersK(n, k) :` `    ``# To store the sum of the series``    ``sum` `=` `0``; num ``=` `1``;` `    ``# While current power of k <= n``    ``while` `(num <``=` `n) :` `        ``# Add current power to the sum``        ``sum` `+``=` `num;` `        ``# Next power of k``        ``num ``*``=` `k;` `    ``# Return the sum of the series``    ``return` `sum``;``    `  `# Find to return the sum of the``# elements from the range [1, n]``# excluding those which are powers of k``def` `getSum(n, k) :` `    ``# Sum of all the powers of k from [1, n]``    ``pwrK ``=` `sumPowersK(n, k);` `    ``# Sum of all the elements from [1, n]``    ``sumAll ``=` `(n ``*` `(n ``+` `1``)) ``/` `2``;` `    ``# Return the required sum``    ``return` `(sumAll ``-` `pwrK);`  `# Driver code``if` `__name__ ``=``=` `"__main__"` `:` `    ``n ``=` `10``; k ``=` `3``;` `    ``print``(getSum(n, k));``    ` `# This code is contributed by AnkitRai01`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{` `// Function to return the sum of all the``// powers of k from the range [1, n]``static` `long` `sumPowersK(``long` `n, ``long` `k)``{` `    ``// To store the sum of the series``    ``long` `sum = 0, num = 1;` `    ``// While current power of k <= n``    ``while` `(num <= n)``    ``{` `        ``// Add current power to the sum``        ``sum += num;` `        ``// Next power of k``        ``num *= k;``    ``}` `    ``// Return the sum of the series``    ``return` `sum;``}` `// Find to return the sum of the``// elements from the range [1, n]``// excluding those which are powers of k``static` `long` `getSum(``long` `n, ``long` `k)``{``    ``// Sum of all the powers of k from [1, n]``    ``long` `pwrK = sumPowersK(n, k);` `    ``// Sum of all the elements from [1, n]``    ``long` `sumAll = (n * (n + 1)) / 2;` `    ``// Return the required sum``    ``return` `(sumAll - pwrK);``}` `// Driver code``public` `static` `void` `Main ()``{``    ``long` `n = 10, k = 3;``    ``Console.WriteLine( getSum(n, k));` `}``}` `// This code is contributed by anuj_67..`

## Javascript

 ``
Output:
`42`

My Personal Notes arrow_drop_up