1145: 有问题的里程表(2)

来源:互联网 发布:苏格兰炸蛋 知乎 编辑:程序博客网 时间:2024/06/09 19:06

1145: 有问题的里程表(2)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 1364  Solved: 784

SubmitStatusWeb Board

Description

某辆汽车有一个里程表,该里程表可以显示一个整数,为该车走过的公里数。然而这个里程表有个毛病:它总是从3变到5,而跳过数字4,里程表所有位(个位、 十位、百位等)上的数字都是如此。例如,如果里程表显示15339,汽车走过1公里之后,该里程表显示15350。

Input

输入一个整数num,表示里程表显示的数值,长度不超过9位,且一定不含整数4。

Output

输出一个整数,表示实际行驶的里程。

Sample Input

150

Sample Output

117

HINT

Source




九进制是只含有0~8 九个数字么,看做是没有4这个数字的九进制数···逐位*9,以4为界进行累加#include<stdio.h>#define N 20int main (){       int num,i=0,k,j;   int str[N];   int m,sum=0;   scanf("%d",&num);       while (num > 0)   {      str[i]=num % 10;  i++;  num = num /10;   }       for ( j = 0 ; j < i ; j++)   {     m=1;  //外层循环每次更新使得m=1 for (k=1;k<=j;k++) { m=m*9;    //当j=2时,循环两次使 m = 9 * 9  }   if ( str[j] <= 3 )   sum += str[j]*m;   if ( str[j] >= 5 )   sum += ( str[j] - 1 ) * m;   }       printf("%d",sum);   }


原创粉丝点击