It's easy, we should have simply started counting centuries from zero. Centuries should be zero-indexed, then everything works. We do the same with people's ages. For the entire initial year of your life you were zero years old. Likewise, from years 0-99, zero centuries had passed so we should call it the zeroth century! At least this is how I justify to my students that zero-indexing makes sense. Everyone's fought t…
We don't 0-index people's ages. There are a million books about "baby's first year", while they're still 0 years old.
In "figure of speech", or conventual use, people start drinking in their 21st year, not their 22nd. In common parlance, they can vote in their 18th year, not their 19th.
We talk of a child in their 10th year as being age 10. Might even be younger. Try asking a people if advice about a child in their "5th year of development" means you're dealing with a 5 year old. Most will say yes.
So perhaps it's logical to count from zero when there's no digit in the magnitude place, because you haven't achieved a full unit till you reach the need for the unit. Arguably a baby at 9 months isn't in their first year as they've experienced zero years yet!
Similarly "centuries" don't have a century digit until the 100s, which would make that the 1st century and just call time spans less than that "in the first hundred years" (same syllables anyway).
It's unsatisfying, but solves the off by one errors, one of the two hardest problems in computer science along with caching and naming things.