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
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
Below is the implementation of the above approach:
// 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 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 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# 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 |
<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>
|
Output:
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.