Rotate image (square matrix) by 90 deg
Tue, 06 May 2025
In early Egypt, people used to use only unit fraction (in the form of (1/n)) to represent the decimal numbers.
The fraction was always written in the form 1/n , where the numerator is always 1 and denominator is a positive number. All other fractions were represented as the summation of the unit fractions.
For example, 3/4 = 1/2 + 1/4. Given a positive fraction, write it in the form of summation of unit fractions.
Example: 2/3 = 1/2 + 1/6 6/14 = 1/3 + 1/11 + 1/231 12/13 = 1/2 + 1/3 + 1/12 + 1/156Greedy Solution:
For a given number of the form ‘nr/dr’ where dr > nr, first find the greatest possible unit fraction, then call the function recursively for the remaining part.
For example, consider 6/14. First find ceiling of 14/6, i.e., 3. The first unit fraction becomes 1/3. The remaining fraction is 6/14 – 1/3 = 4/42. Now repeat the same algorithm for 4/42. The ceiling of 42/4 is 11. So the next unit fraction is 1/11. Now we are left with 4/42 - 1/11 = 1/231. This is a unit fraction itself. So we stop the recursion. We stop when the result is a unit fraction. 6/14 = 1/3 + 1/11 + 1/231
class Egyptian Fraction
{
static void printEgyptian(int nr, int dr)
{
if (0 == nr || 0 == dr)
return;
// IF nr IS MULTIPLE OF nr. THEN NOT A FRACTION
if (nr % dr == 0)
{
System.out.print(nr / dr);
return;
}
// IF ALREADY A UNIT FRACTION. OR CAN BE DIRECTLY CONVERTED TO IT.
// i.e dr divisible by nr
if (dr % nr == 0)
{
System.out.print("1/" + dr / nr);
return;
}
if (nr > dr)
{
System.out.print(nr / dr + " + ");
printEgyptian(nr % dr, dr);
return;
}
// PRINT ceiling(dr/nr) AS CURRENT FRACTION
int n = dr/nr + 1;
System.out.print("1/" + n + " + ");
// Recur for remaining part
printEgyptian(nr * n - dr, dr * n);
}
}
Note that there exists multiple solution to the same fraction. For example:
3/4 = 1/2 + 1/4
3/4 = 1/2 + 1/5 + 1/20
Tue, 06 May 2025
Tue, 06 May 2025
Tue, 06 May 2025
Leave a comment