关于程序运行超时的问题
问题:有一个里程计数器,汽车每走一公里它计数一次,但是它每次都会跳过含有3和8的数字,例如29的下一个不是30,而是40.,15229的下一个不是15230而是15240。现在给出一个读数,问汽车实际走了多少公里?(输入0时则不输出答案。)以下是我的代码,超时了,请问怎么进行优化?
#include<stdio.h>
int main()
{
int reading = 0, t = 0; /*t is used to store the value of i*/
int flag = 1, actual_num = 0;
while(1)
{
scanf("%d", &reading);
if(reading == 0)
break;
actual_num = 0;
for(int i = 1;i <= reading;i++)
{
t = i;
while(i != 0)
{
if(i % 10 == 3 || i % 10 == 8 ) //determine whether there is 3 or 8 in the number
{
flag = 0;
break;
}
i = i/10;
}
if(flag)
actual_num++;
i = t;
flag = 1;
}
printf("%d: %d\n", reading, actual_num);
}
return 0;
}