5.1 简单数学:A1049 Counting Ones

5.1 简单数学:A1049 Counting Ones 

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<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;

int main(){
    int n,a=1,ans=0;
    int left,now,right;
    scanf("%d",&n);
    while(n/a!=0){
        left=n/(a*10);
        now=n/a%10;
        right=n%a;
        if(now==0) ans+=left*a;
        else if(now==1) ans+=left*a+right+1;
        else ans+=(left+1)*a;
        a*=10;
    }
    printf("%d\n",ans);
    return 0;
}
发布了157 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/nanke_4869/article/details/104631753