Add Frizzy Number (fixes #3379) (#3906)

This commit is contained in:
Siddhant Swarup Mallick 2023-03-01 20:46:32 +05:30 committed by GitHub
parent f3613382aa
commit 87f9ebcb29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 81 additions and 0 deletions

View File

@ -0,0 +1,33 @@
/** Author : Siddhant Swarup Mallick
* Github : https://github.com/siddhant2002
*/
/** Program description - To find the FrizzyNumber*/
package com.thealgorithms.maths;
public class FrizzyNumber {
/**
* Returns the n-th number that is a sum of powers
* of the given base.
* Example: base = 3 and n = 4
* Ascending order of sums of powers of 3 =
* 3^0 = 1, 3^1 = 3, 3^1 + 3^0 = 4, 3^2 + 3^0 = 9
* Ans = 9
*
* @param base The base whose n-th sum of powers is required
* @param n Index from ascending order of sum of powers of base
* @return n-th sum of powers of base
*/
public static double getNthFrizzy(int base, int n) {
double final1 = 0.0;
int i = 0;
do
{
final1 += Math.pow(base, i++) * (n % 2);
} while ((n /= 2) > 0);
return final1;
}
}

View File

@ -0,0 +1,48 @@
package com.thealgorithms.maths;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class FrizzyNumberTest {
@Test
public void testFrizziesForBase2() {
assertEquals(
1,
FrizzyNumber.getNthFrizzy(2, 1));
assertEquals(
3,
FrizzyNumber.getNthFrizzy(2, 3));
assertEquals(
1000,
FrizzyNumber.getNthFrizzy(2, 1000));
}
@Test
public void testFrizziesForBase3() {
assertEquals(
1,
FrizzyNumber.getNthFrizzy(3, 1));
assertEquals(
3,
FrizzyNumber.getNthFrizzy(3, 2));
assertEquals(
29430,
FrizzyNumber.getNthFrizzy(3, 1000));
}
@Test
public void testFrizziesForBase69() {
assertEquals(
1,
FrizzyNumber.getNthFrizzy(69, 1));
assertEquals(
69,
FrizzyNumber.getNthFrizzy(69, 2));
assertEquals(
328510,
FrizzyNumber.getNthFrizzy(69, 9));
assertEquals(
333340,
FrizzyNumber.getNthFrizzy(69, 15));
}
}