NYOJ506 洗澡

原题链接

开始想得比较复杂,结果理不清思路,后来发现可以直接打表,然后就过了。

#include <cstdio>
#define MAX 50000 + 2
int a[MAX];

bool f(int n){
	while(n){
		if(n % 10 == 4) return 1;
		n /= 10;
	}
	return 0;
}

int main(){
	int n;
	for(n = 1; n != MAX; ++n)
		if(f(n)) a[n] = a[n - 1];
		else a[n] += a[n - 1] + 1;		
	while(scanf("%d", &n) == 1)
		printf("%d\n", a[n]);
	return 0;
}


posted on 2014-02-26 16:58  长木Qiu  阅读(127)  评论(0编辑  收藏  举报