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 isInput: 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 #include<bits/stdc++.h> using namespace std; // Function to split the fraction // into the N parts void splitFraction( int n, int d) { int ar[n]; int first = d + n - 1; ar[0] = 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 Code int 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[ 0 ] = 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 parts def splitFraction(n, d): ar = [] for i in range ( 0 , n): ar.append( 0 ) first = d + n - 1 ar[ 0 ] = 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 Code N = 4 D = 2 # Function Call splitFraction(N, D) # This code is contributed by ishayadav181 |
C#
// C# implementation to split the // fraction into N parts using System; class GFG{ // 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[0] = 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 Code public static void Main(String[] args) { int N = 4; int D = 2; // Function Call splitFraction(N, D); } } // This code is contributed by SoumikMondal |
Javascript
<script> // JavaScript implementation to split the // fraction into N parts // Function to split the fraction // into the N parts function splitFraction(n, d) { var ar = new Array(n); var first = d + n - 1; ar[0] = first; // Loop to find the N - 1 // fraction for ( var i = 1; i < n; i++) { ar[i] = first * --first; } // Loop to print the Fractions for ( var i = 0; i < n; i++) { if (ar[i] % n === 0) { document.write( "1/" + ar[i] / n + ", " ); } else { document.write(n + "/" + ar[i] + ", " ); } } } // Driver Code var N = 4; var D = 2; // Function Call splitFraction(N, D); </script> |
4/5, 1/5, 1/3, 4/6,
Time Complexity: O(n), where n is the given integer.
Auxiliary Space: O(n), where n is the given integer.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!