给定一个分数N/D ,任务是将这个分数分成 N 个部分,使得它们的总和等于分数 N/D,即,
注意:用分数表示项,而不是浮点数。
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
方法:问题中的关键观察是第一个分数分子可以是然后进一步分母可以使用以下递推关系。
下面是上述方法的实现:
C++
// C++ implementation to split the
// fraction into N parts
#include
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
输出:
4/5, 1/5, 1/3, 4/6,