C++ 程序 计算可被8整除的旋转次数
给定一个作为字符串的大正数,计算该数字的所有旋转中可被8整除的数字数量。
举例:
方法: 对于较大的数字,难以将其旋转并将每个数字除以8。因此,使用了“可被8整除”的属性,该属性表明如果数字的最后3个数字可被8整除,则数字可被8整除。在此处,我们不实际旋转数字并检查最后8位数字是否可被整除,而是计算由3个数字(以环形方式)组成的连续序列,这些连续序列可被8整除。
示范:
考虑数字928160
其 旋转 为928160、092816、609281、
160928、816092、281609。
现在按照所述方法从原始数字928160开始形成连续的3位数序列。
3位数: (9,2,8),(2,8,1),(8,1,6),
(1,6,0),(6,0,9),(0,9,2)
我们可以观察到,这些集合所形成的3位数,即928、281、816、160、609、092,
都出现在某些旋转的最后3位数字中。
因此,检查这些3位数是否可被整除就可以得到所需的旋转次数。
输出:
时间复杂度: O(n),其中 n 是输入数字的位数。
辅助空间复杂度: O(1)