1049. Counting Ones (30)

计算1到N中“1”出现的次数。

只能说自己太弱了……记住几个数字12045,12145,12245,统计每位出现1的次数,求和即可。以百位为例,分情况总结吧

 1 #include<stdio.h>
 2 
 3 int Solve(int n)
 4 {
 5     int cur,before,next,cnt;
 6     cur=before=next=cnt=0;
 7     int i=1;
 8     while((n/i)!=0)
 9     {
10         cur=(n/i)%10;
11         before=(n/i)/10;
12         next=n-(n/i)*i;
13         if (cur<1)cnt+=before*i;
14         else if (cur==1)cnt+=before*i+next+1;
15         else if (cur>1)cnt+=(before+1)*i;
16         i*=10;
17     }
18     return cnt;
19 }
20 int main()
21 {
22     int N,cnt;
23     scanf("%d",&N);
24     printf("%d",Solve(N));
25     return 0;
26 }
原文地址:https://www.cnblogs.com/wuxiaotianC/p/6415007.html