题目地址

The task is simple: given any positive integer N, you are supposed to count the total number of 1's in the decimal form of the integers from 1 to N. For example, given N being 12, there are five 1's in 1, 10, 11, and 12.

Input Specification:
Each input file contains one test case which gives the positive N (≤2
​30
​​ ).

Output Specification:
For each test case, print the number of 1's in one line.

Sample Input:
12

Sample Output:
5

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int n;cin>>n;
    int a=1,ans=0;
    while(n/a!=0){        //important 1;
        int l=n/(a*10), now=n/a%10,r=n%a;        //important 2;
        if(now==0) ans+=l*a;
        else if(now==1)  ans+=l*a+1+r;
        else ans+=(l+1)*a;
        a*=10;
    }
    cout<<ans;
}