#include <stdio.h> #include <stdlib.h> int main(void) { int num,sum=0; int i=0,j,k; int m; int str[10]; scanf("%d", &num); while(num>0) { str[i]=num%10; num=num/10; i++; } for(j=0;j<i;j++) { m=1; for(k=1;k<=j;k++) { m*=9; } if(str[j]<=3) sum+=str[j]*m; if(str[j]>=5)//以4隔开 sum+=(str[j]-1)*m; } printf("%d\n", sum); return 0; }
(转载)思路:本题若在数据小的话可用普通循环逐次检验即可,重要之处在于判断里程表的位数,1,2,3位的计算公式不同;在数据大的情况下可用九进制,逐位*9,以4为界限来累加。
有问题的里程表
最新推荐文章于 2022-03-08 15:27:52 发布