洗澡
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
Mostrp是个爱干净的好少年。 有一次去澡堂洗澡时发现 澡堂的澡柜编号中没有出现过数字‘4’。 Mostrp 感到很好奇。可能是因为在澡堂老板眼里。数字‘4’是十分不吉利的。
现在Mostrp知道澡柜的最大的编号N,你能帮他算出澡堂一共有多少澡柜吗?
-
输入
-
有多组数据,每行输入一个N。
( 1 <= N <= 50000 )
输出
- 输出澡柜的个数,输出占一行。 样例输入
-
3 5
样例输出
-
3 4
上传者
#include <stdio.h> int judge(int n) { while (n) { if (n % 10 == 4) return 0; n /= 10; } return 1; } int main(void) { int n, i; int arr[50001] = {0}; for (i = 1; i < 50001; i++) arr[i] = arr[i - 1] + judge(i);//预先用数组储存值,估计很费时 while (scanf("%d", &n) != EOF) printf("%d\n", arr[n]); return 0; }
#include<iostream> using namespace std; const int N=50005; int Num[N]={0}; int Judge(int i){ while(i){ if(i%10==4) return 0; i/=10; } return 1; } void SetTable(){ for(int i=1;i<N;i++) Num[i]=Num[i-1]+Judge(i); } int main(){ SetTable(); int n; while(cin>>n) cout<<Num[n]<<endl; return 0; }
-
有多组数据,每行输入一个N。