4位年份和十年计数器

时间:2018-08-26 22:34:33

标签: algorithm overflow

所以我遇到了这个问题,我想不出一个好的解决方案,也许有人可以指出我正确的方向。 假设我有一个 4位 counter(所以它可以从0-15以十进制开始计数)表示已过去的年数。在16年,年计数器将溢出并重置为0,在17年将是1,依此类推。我还有一个decade计数器,其值在110年间,值19,在2至{{ 1}},依此类推。 如果我具有yearCounter和decadeCounter信息,如何获得经过的总年数?

例如2029decade = 1

这种问题是否有名称?并有一个函数可以从这些counter = 2year = 18个溢出中计算year的数量吗?

1 个答案:

答案 0 :(得分:1)

问题的名字是模运算;前提是year不是我们有

 decade  = year / 10
 counter = year % 16

反向公式(您要查找的)是

 year = decade * 10 + (16 - (decade * 10) % 16 + counter) % 16

其中%余数,而/整数除

例如,如果我们有year = 2018

decade  = 2018 / 10 = 201
counter = 2018 % 16 = 2

反向公式给出

year = 201 * 10 + (16 - (201 * 10) % 16 + 2) % 16 =
       2010 + (16 - 2010 % 16 + 2) % 16 =
       2010 + (16 - 10 + 2) % 16 =
       2010 + 8 % 16 =
       2010 + 8 =
       2018