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

1145: 有问题的里程表(2)
时间限制: 1 Sec 内存限制: 128 MB
提交: 4612 解决: 3035
[状态] [讨论版] [提交] [命题人:admin]
题目描述
某辆汽车有一个里程表,该里程表可以显示一个整数,为该车走过的公里数。然而这个里程表有个毛病:它总是从3变到5,而跳过数字4,里程表所有位(个位、 十位、百位等)上的数字都是如此。例如,如果里程表显示15339,汽车走过1公里之后,该里程表显示15350。

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

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

样例输入 Copy
150
样例输出 Copy
117

#include <stdio.h>


// 有问题的里程表(2)
int main(void){
    
    
   int num,sum = 0;
   int i = 0, j, k, t;
   int str[10];
   // 输入num 
   scanf("%d", &num);
   
   while(num > 0){
    
    
   		str[i] = num % 10;
        num = num / 10;
        i++;
   }
   for(j = 0; j < i; j++){
    
    
   	    t = 1;
   	    for(k = 1; k <= j; k++){
    
    
   	    	t *= 9;
		}
       if(str[j] <= 3)
    		sum += str[j] * t;
       if(str[j] >= 5)
        	sum += (str[j] - 1) * t;
   }
   printf("%d\n", sum);
   return 0;
}

Guess you like

Origin blog.csdn.net/m0_45306379/article/details/121649141