Skip to content
Related Articles

Related Articles

Find the sum of numbers from 1 to n excluding those which are powers of K
  • Last Updated : 03 Jun, 2019

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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..

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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..

chevron_right


Output:

42

competitive-programming-img

My Personal Notes arrow_drop_up
Recommended Articles
Page :