将计数器转化为函数:求依赖s和n的计数器b的表达式
问题解法
首先明确核心关系:
- 给定奇数
n,序列s的通项为s = n + 2k(k为非负整数,k ≥ 0) - 计数器
a每遍历n个s值后重置,因此a的重置次数等于k除以n的整数商(向下取整)
根据b初始值为1、每次a重置时递增2的规则,推导步骤如下:
- 计算
k的表达式:k = (s - n) / 2 - 计算
a的重置次数:floor(k / n) = floor( (s - n) / (2n) ) - 得到
b的表达式:f(s,n) = 1 + 2 * floor( (s - n) / (2n) )
等价简化形式
也可以整理为更简洁的等价表达式:f(s,n) = 2 * floor( (s + n) / (2n) ) - 1
验证示例
以n=3为例:
s=3:f(3,3)=1+2*floor(0/6)=1,符合初始值s=9:f(9,3)=1+2*floor(6/6)=3,对应a第一次重置后的值s=15:f(15,3)=1+2*floor(12/6)=5,对应a第二次重置后的值
内容的提问来源于stack exchange,提问作者DatBoi
相关产品推荐
相关产品推荐

