思路:分别计算个位出现1的次数,十位出现1的次数,百位出现1的次数…
- 个位数出现1的次数
找规律发现1,11,21,31…,个位数1每隔10次出现一次,初步猜测为n/10。但是需要注意当n%10>=1的时候,出现次数为n/10+1,而当n%10<1的时候,出现次数为n/10。
故个位数出现1的次数为:
if n%10<1: s=n/10
else: s=n/10+1 - 十位数出现1的次数
找规律发现10,11,12,…,19,110,111,112,…,119,十位数1每隔100次出现10次,初步猜测为[n/100]*10。但是需要注意的是
当n%100>19的时候,出现次数为[n/100]*10+10;
当n%100<10的时候,出现次数为n/100;
当10<=n%100<=19的时候,出现次数为[n/100]*10+n%10+1 - 百位数出现1的次数
找规律发现100,101,…,199,1100,1101,…,1199,百位数1每隔1000次出现100次,初步猜测为[n/1000]*100。但是需要注意的是:
当n%1000>199时,出现次数为[n/1000]*100+100;
当n%1000<100时,出现次数为[n/1000]*100;
当100&l