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