# Sum of count of persons still performing the job whenever a person finishes job

• Difficulty Level : Easy
• Last Updated : 18 Nov, 2021

Given two integers P denoting the number of people and a positive integer K. Each person is assigned with the same job which takes exactly K hours to finish. A condition is given that all of them can start performing their jobs exactly in X hours of interval. Count the number of persons still performing the job whenever a prior person finishes his/her job. The task is to find the sum of such counts.

Examples:

Input: P = 4, K = 6, X = 3
Output: 5
Explanation: Let the four persons be P1, P2, P3, P4

• P1 starts at 0 and finishes at 6
• P2 starts at 3 and finishes at 9
• P3 starts at 6 and finishes at 12
• P4 starts at 9 and finishes at 15

So, when P1 finishes, P2 and P3 started performing their respective job, count for P1 = 2
when P2 finishes, P3 and P4 started performing their respective job, count for P2 = 2
when P3 finishes, only P4 started performing the job, count for P3 = 1
when P4 finishes, there is no person who starts at this point, so count for P4 = 0
Therefore, Total counts = (2 + 2 + 1 + 0) = 5

Input: P = 9, K = 72, X = 8
Output: 36

Approach: The given problem can be solved by analyzing the problem with the concept of math. Follow the steps below to solve the problem:

• Find the minimum of total persons excluding the first one(because P1 always starts at 0) and K/X, store it in a variable say a.
• Check if a is equal to 0
• if yes, return 0.
• else, calculate the total sum of count by making mathematical formula.
• Return the final sum of count as the required answer.

Below is the implementation of the above approach:

## C++

 `// C++ implementation for the above approach``#include ``using` `namespace` `std;` `// Function to find the sum of count``// of persons that are still``// performing the job``int` `countPersons(``int` `P, ``int` `K, ``int` `X)``{``    ``// Find the minimum of total persons``    ``// excluding the first one and K/X``    ``int` `a = min(P - 1, K / X);` `    ``// If a is equal to 0, return 0``    ``if` `(a == 0) {``        ``return` `0;``    ``}` `    ``// Else calculate the total sum of``    ``// count by the making a formula``    ``int` `ans = max(0,``                  ``a * (a - 1) / 2)``              ``+ a * (P - a);` `    ``// Return the sum of count``    ``return` `ans;``}` `// Driver Code``int` `main()``{``    ``int` `P = 22, K = 9, X = 1;` `    ``cout << countPersons(P, K, X);` `    ``return` `0;``}`

## Java

 `// Java program for the above approach``import` `java.util.*;``public` `class` `GFG {` `// Function to find the sum of count``// of persons that are still``// performing the job``static` `int` `countPersons(``int` `P, ``int` `K, ``int` `X)``{``    ``// Find the minimum of total persons``    ``// excluding the first one and K/X``    ``int` `a = Math.min(P - ``1``, K / X);` `    ``// If a is equal to 0, return 0``    ``if` `(a == ``0``) {``        ``return` `0``;``    ``}` `    ``// Else calculate the total sum of``    ``// count by the making a formula``    ``int` `ans = Math.max(``0``,``                  ``a * (a - ``1``) / ``2``)``              ``+ a * (P - a);` `    ``// Return the sum of count``    ``return` `ans;``}` `// Driver Code``public` `static` `void` `main(String args[])``{``    ``int` `P = ``22``, K = ``9``, X = ``1``;``    ``System.out.println(countPersons(P, K, X));``}``}``// This code is contributed by Samim Hossain Mondal.`

## Python3

 `# Python program for the above approach` `# Function to find the sum of count``# of persons that are still``# performing the job``def` `countPersons(P, K, X):` `    ``# Find the minimum of total persons``    ``# excluding the first one and K/X``    ``a ``=` `min``(P ``-` `1``, K ``/` `X)` `    ``# If a is equal to 0, return 0``    ``if` `a ``=``=` `0``:``        ``return` `0` `    ``# Else calculate the total sum of``    ``# count by the making a formula``    ``ans ``=` `max``(``0``,``              ``a ``*` `(a ``-` `1``) ``/` `2``)` `    ``# Return the sum of count``    ``return` `ans ``+` `a ``*` `(P ``-` `a)` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ``P ``=` `22``    ``K ``=` `9``    ``X ``=` `1``    ``print``(``int``(countPersons(P, K, X)))` `# This code is contributed by Potta Lokesh`

## C#

 `// C# program for the above approach``using` `System;``class` `GFG {` `// Function to find the sum of count``// of persons that are still``// performing the job``static` `int` `countPersons(``int` `P, ``int` `K, ``int` `X)``{``    ``// Find the minimum of total persons``    ``// excluding the first one and K/X``    ``int` `a = Math.Min(P - 1, K / X);` `    ``// If a is equal to 0, return 0``    ``if` `(a == 0) {``        ``return` `0;``    ``}` `    ``// Else calculate the total sum of``    ``// count by the making a formula``    ``int` `ans = Math.Max(0,``                  ``a * (a - 1) / 2)``              ``+ a * (P - a);` `    ``// Return the sum of count``    ``return` `ans;``}` `// Driver Code``public` `static` `void` `Main()``{``    ``int` `P = 22, K = 9, X = 1;``    ``Console.Write(countPersons(P, K, X));``}``}``// This code is contributed by Samim Hossain Mondal.`

## Javascript

 ``

Output

`153`

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up