即从右向左遍历数字的每一位。
根据当前位的值,分为三种情况处理:
(1)如果当前位大于2,则当前位出现2的次数等于左侧数字加1乘以当前位的基数
(2)如果当前位等于2,则当前位出现2的次数等于左侧数字乘以当前位的基数,再加上右侧数字加1。
话说这天,月朗风清,小红在散步过程中遇到一位老者,他不时念叨着“太极生两仪,两仪为阴阳......”,老者拦住小红,问道,我这里有一个数字,你能告诉我所有小于等于这个数的非负整数中数字2的出现次数吗?
一个正整数n,其取值范围为(0,999999]
一个正整数,即[0,n]之间数字2的出现次数。
输入
10
输出
1
输入
30
输出
13
1s, 1024KiB for each test case.