计算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 }