网站安装不了wordpress,宝山湖网站建设,吴江经济开发区人才网,如何建立自己的网拍平台给定一个整数 n#xff0c;计算所有小于等于 n 的非负整数中数字 1 出现的个数。
示例 1#xff1a;
输入#xff1a;n 13 输出#xff1a;6 示例 2#xff1a;
输入#xff1a;n 0 输出#xff1a;0
解题思路
正确性证明
例如#xff1a;对于n3015#xff0c…给定一个整数 n计算所有小于等于 n 的非负整数中数字 1 出现的个数。
示例 1
输入n 13 输出6 示例 2
输入n 0 输出0
解题思路
正确性证明
例如对于n3015
个位为1的数字组成为[000-301]1所以共有302个数字个位数为1所以对答案贡献302个1。十位为1的数字组成为[01-30]1[00-99]和[00]1[00-05]所以共有3006个数字个位数为1所以对答案贡献306个1。百位为1的数字组成为[0-2]1[00-99]所以共有300个数字个位数为1所以对答案贡献200个1。千位数字为1很明显只有1000个数字1[000-999],所以对答案贡献1000个1。
所以最后的总和为1908
代码
class Solution {public int countDigitOne(int n) {int bef0,res0,w1;while (n0){int curn%10;n/10;if (cur1){res(n1)*w;}else if (cur1){resn*wbef1;}else resn*w;befcur*w;w*10;}return res;}
}