1049. Counting Ones

我实在编程之美上看的答案,把一个数分位讨论再相加,即把个位十位、、出现的1的个数各自加起来,不同的位的1的个数互不影响。难点就是一般大家不会想到这样分位进行讨论吧。

#include<iostream>
using namespace std;
int main()
{
    int n,cnt=0;
    cin>>n;
    for(int t,base=1;n/base;base*=10)
    {
        cnt+=base*(n/(10*base));
        t=(n%(base*10))/base;
        if(t==1)cnt+=n%base+1;
        if(t>1)cnt+=base;
    }
    cout<<cnt;
}


你可能感兴趣的:(1049. Counting Ones)