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; }