The challenge
The first century spans from the year 1 up to and including the year 100, The second – from the year 101 up to and including the year 200, etc.
Task :
Given a year, return the century it is in.
Input, Output Examples
centuryFromYear(1705) returns (18)
centuryFromYear(1900) returns (19)
centuryFromYear(1601) returns (17)
centuryFromYear(2000) returns (20)
The solution in Java code
Option 1:
public class Solution {
public static int century(int number) {
return (number + 99) / 100;
}
}
Option 2:
import java.lang.Math;
public class Solution {
public static int century(int number) {
return (int)Math.ceil((double)number/100);
}
}
Option 3:
public class Solution {
public static int century(int number) {
int yearsInCentury = 100;
return number % yearsInCentury == 0
? number/yearsInCentury
: number/yearsInCentury + 1;
}
}
Option 4:
public class Solution {
public static int century(int number) {
int century = (int) number / 100;
int remains = (int) number % 100;
if (remains > 0) {
century += 1;
}
return century;
}
}
Test cases to validate our solution
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
import java.util.Random;
public class Tests {
@Test
public void FixedTests() {
assertEquals(18, Solution.century(1705));
assertEquals(19, Solution.century(1900));
assertEquals(17, Solution.century(1601));
assertEquals(20, Solution.century(2000));
assertEquals(1, Solution.century(89));
}
@Test
public void RandomTests() {
Random rand = new Random();
for(int i = 0; i < 100;) {
int a = rand.nextInt(++i * 100);
int b = (int)(--a/100+1);
assertEquals(b, Solution.century(++a));
}
}
}