http://pat.zju.edu.cn/contests/pat-a-practise/1049
题目很有意思,感觉机试的时候出这种题目还是很好的,直接暴力就可以拿到20多分,哈哈
看《编程之美》上的讲解,拿出代码跟大家分享一下(具体的分析过程大家可以去看看编程之美的2.4数字之美)
贴一下可以AC的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include<stdio.h> int count(int n){ int ifactor=1,sum=0,ilowernum=0,icurrnum=0,ihighnum=0; while(n/ifactor!=0){ ilowernum=n-(n/ifactor)*ifactor; icurrnum=(n/ifactor)%10; ihighnum=n/(ifactor*10); switch(icurrnum){ case 0: sum+=ihighnum*ifactor; break; case 1: sum+=ihighnum*ifactor+1+ilowernum; break; default: sum+=(ihighnum+1)*ifactor; break; } ifactor*=10; } return sum; } int main(){ int n,i; int sum=0; scanf("%d",&n); //for(i=1;i<=n;++i){ // sum+=count(i); //} printf("%d\n",count(n)); return 0; } |