parent
f3613382aa
commit
87f9ebcb29
33
src/main/java/com/thealgorithms/maths/FrizzyNumber.java
Normal file
33
src/main/java/com/thealgorithms/maths/FrizzyNumber.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
48
src/test/java/com/thealgorithms/maths/FrizzyNumberTest.java
Normal file
48
src/test/java/com/thealgorithms/maths/FrizzyNumberTest.java
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user