public static int countint n ifn1 return 0; int count = 0; 总个数 int base = 1; 乘数因子 int round = n; whileround0 int weight = round10;
这段代码计算一个整数n中包含数字1的个数。其数学计算公式如下:
- 初始化总个数count为0,乘数因子base为1。
- 从右向左遍历n的每一位数字,将当前位的权重赋值给变量weight。
- 将n除以10,即将n向右移动一位,得到去掉当前位的数值round。
- 根据权重weight的值进行计算: a. 如果weight为1,说明当前位为1的个数由两部分组成:roundbase(即当前位之前的数字中1出现的次数),以及(n%base)+1(即当前位的右边的数字中1出现的次数)。 b. 如果weight大于1,说明当前位为1的个数由两部分组成:roundbase(即当前位之前的数字中1出现的次数),以及base(即当前位为1的个数)。
- 将count累加上计算得到的结果。
- 将base乘以10,即将乘数因子base向左移动一位。
- 重复步骤2到步骤6,直到遍历完n的所有位数。
- 返回最终的总个数count。
原文地址: https://www.cveoy.top/t/topic/hZpA 著作权归作者所有。请勿转载和采集!