我的代码:
#include <stdio.h>
int main()
{
int num, i, t, r, item;
scanf_s("%d", &num);
t = 0;
for (i = 1; i <= num; i++)
{
item = i;
while (item % 10 != 0)
{
r = item % 10;
item = item / 10;
if (r == 4)
{
t += 1;
break;
}
}
}
printf("%d", num - t - 1);
return 0;
}
首先明确没有等于4的情况
个位c>4时,多计算一公里需要num=num-1
<4时,不需要减
十位b>4时,多计算了10公里,num=num-10;且期间4,14,24,34,54,64,74,84,均为多加,其中规律为,b减5,为多跑公里数,例如num=87,多跑了三公里分别为54,64,74。所以num=num-10-4-(b-5);
<4时,十位数就表示多跑的公里数;num-十位数
百位a>4时,多计算了100公里,num=num-100;且期间num=num-100-(a-1)10-9(a-1);
<4时,num=num-10a+9*a;
#include <stdio.h>
int main(){
int num,a,b,c;
scanf("%d",&num);
if (num<1000&&num>1){
a=num/100;
b=num/10%10;
c=num%10;
if(a!=4&&b!=4&&c!=4){
if(c>4)
num-=1;
if(b>4)
num-=14-(b-5);
else num-=b;
if(a>=4)
num-=100-(a-1)*10-(a-1)*9;
else num-=10*a+9*a;
}
printf("%d",num);
}
}
这是我的思路