首页 > 其他 > 详细

1~N中1的个数

时间:2020-09-12 11:25:33      阅读:62      评论:0      收藏:0      [点我收藏+]

题解又双叒叕来了!

技术分享图片

 

  • 为了依次求个位,十位,百位中1的个数,我们可以把这个数字分为三部分,高位数字,当前位数字,低位数字。
  • 如果当前位为0,那么此位为1的数目与高位数字有关
  • 如果当前位为1,那么此位为1的数目与高位和地位都有关
  • 如果当前位其他,那么此位为1的数目与高位数字有关
  • 具体规律看源代码

也就写了10分钟

上代码

 学废了扣1.没学废扣眼珠子

#include <iostream>
using namespace std;
int main(){
    int N;
    cin>>N;
    int factor=1;
    int count=0;
    while(N/factor!=0){
        int highNum=N/(factor*10);
        int curNum=(N/factor)%10;
        int lowNum=N-(N/factor)*factor;
        switch(curNum){
            case 0:
                count+=highNum*factor;
                break;
            case 1:
                count+=highNum*factor+lowNum+1;
                break;
            default:
                count+=(highNum+1)*factor;
        }
        factor*=10;
    }
    cout<<count<<endl;
    return 0;
}

  技术分享图片

 

1~N中1的个数

原文:https://www.cnblogs.com/20070618hyz/p/13655933.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!