# Find N fractions that sum upto a given fraction N/D

• Difficulty Level : Hard
• Last Updated : 13 May, 2021

Given a fraction N/D, the task is to split this fraction into N parts such that their sum is equal to the fraction N/D, i.e., Note: Represents the terms in terms of fractions, instead of floating point numbers.

Input: N = 4, D = 2
Output: 4/5, 1/5, 1/3, 4/6
Explanation: Therefore, it is a valid set of fractions such that their sum is Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

Input: N = 3, D = 4
Output: 1/2, 1/10, 3/20
Explanation: Therefore, it is a valid set of fractions such that their sum is Approach: The key observation in the problem is that the first fraction numerator can be and then further denominators can be using the below recurrence relation. Below is the implementation of the above approach:

## C++

 // C++ implementation to split the// fraction into N parts#includeusing namespace std; // Function to split the fraction// into the N partsvoid splitFraction(int n, int d){    int ar[n];    int first = d + n - 1;    ar = first;     // Loop to find the N - 1    // fraction    for(int i = 1; i < n; i++)    {       int temp = --first;       first++;        ar[i] = first * temp;       --first;    }     // Loop to print the Fractions    for(int i = 0; i < n; i++)    {       if (ar[i] % n == 0)       {           cout << "1/" << ar[i] / n << ", ";       }       else       {           cout << n << "/" << ar[i] << ", ";       }    }} // Driver Codeint main(){    int N = 4;    int D = 2;     // Function Call    splitFraction(N, D);} // This code is contributed by Bhupendra_Singh

## Java

 // Java implementation to split the// fraction into N parts import java.util.Scanner; class Solution {     // Function to split the fraction    // into the N parts    public static void    splitFraction(int n, int d)    {         long ar[] = new long[n];        long first = d + n - 1;        ar = first;         // Loop to find the N - 1        // fraction        for (int i = 1; i < n; i++) {            ar[i] = first * (--first);        }         // Loop to print the Fractions        for (int i = 0; i < n; i++) {            if (ar[i] % n == 0) {                System.out.print(                    "1/" + ar[i] / n                    + ", ");            }            else {                System.out.print(                    n + "/" + ar[i]                    + ", ");            }        }    }     // Driver Code    public static void main(        String[] args) throws Exception    {        int N = 4;        int D = 2;         // Function Call        splitFraction(N, D);    }}

## Python3

 # Python3 implementation to split the# fraction into N parts # Function to split the fraction# into the N partsdef splitFraction(n, d):         ar = []    for i in range(0, n):        ar.append(0)         first = d + n - 1    ar = first         # Loop to find the N - 1    # fraction    for i in range(1, n):        temp = first - 1        ar[i] = first * temp        first -= 1         # Loop to print the Fractions    for i in range(0, n):        if ar[i] % n == 0:            print("1/", int(ar[i] / n),                  "," , end = " ")                           else:            print(n, "/", ar[i], ",", end = " ")     # Driver CodeN = 4D = 2 # Function CallsplitFraction(N, D) # This code is contributed by ishayadav181

## C#

 // C# implementation to split the// fraction into N partsusing System; class GFG{ // Function to split the fraction// into the N partspublic static void splitFraction(int n, int d){    long []ar = new long[n];    long first = d + n - 1;    ar = first;     // Loop to find the N - 1    // fraction    for(int i = 1; i < n; i++)    {       ar[i] = first * (--first);    }     // Loop to print the Fractions    for(int i = 0; i < n; i++)    {       if (ar[i] % n == 0)       {           Console.Write("1/" + ar[i] / n + ", ");       }       else       {           Console.Write(n + "/" + ar[i] + ", ");       }    }} // Driver Codepublic static void Main(String[] args){    int N = 4;    int D = 2;     // Function Call    splitFraction(N, D);}} // This code is contributed by SoumikMondal

## Javascript

 
Output:
4/5, 1/5, 1/3, 4/6,

My Personal Notes arrow_drop_up