所以我遇到了这个问题,我想不出一个好的解决方案,也许有人可以指出我正确的方向。
假设我有一个 4位 counter
(所以它可以从0-15
以十进制开始计数)表示已过去的年数。在16
年,年计数器将溢出并重置为0
,在17
年将是1
,依此类推。我还有一个decade
计数器,其值在1
至10
年间,值19
,在2
至{{ 1}},依此类推。
如果我具有yearCounter和decadeCounter信息,如何获得经过的总年数?
例如20
和29
; decade = 1
。
这种问题是否有名称?并有一个函数可以从这些counter = 2
到year = 18
个溢出中计算year
的数量吗?
答案 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