杭电 2089 不要62

Description

杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 
杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 
不吉利的数字为所有含有4或62的号码。例如: 
62315 73418 88914 
都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。 
你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。 
 

Input

输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。 
 

Output

对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。 
 

Sample Input

1 100
0 0
 

Sample Output

80
 
 1 #include<cstdio>
 2 int a[1000000+11]={0,1}; //0代表不吉利 
 3 int main()
 4 {
 5     int j,k,l,s;
 6     for(int i=1;i<=1000000;i++)
 7     {
 8         j=0;
 9         l=i;
10         while(l)
11         {
12             s=l%10;
13             l=l/10;
14             if(s == 4) 
15             {
16                 a[i]=a[i-1];
17                 j=1;
18                 break;
19             }
20             if(s == 2 && l%10==6)
21             {
22                     a[i]=a[i-1];
23                     j=1;
24                     break;
25             }
26         }
27         if(j==0) a[i]=a[i-1]+1;
28     }
29     int n,m;
30     while(scanf("%d%d",&m,&n)&&(m+n))
31     {
32         printf("%d\n",a[n]-a[m-1]);
33     }
34 }
 1 #include<cstdio>
 2 int a[1000000+11]={0,1};
 3 int good(int l)
 4 {
 5     int d;
 6     while(l)
 7     {
 8         d=l%10;
 9         l/=10;
10         if(d == 4) return 0;
11         if(d == 2 && l%10 == 6)
12         return 0;
13     }
14     return 1;
15 }
16 int main()
17 {
18     for(int i=1;i<1000000;i++)
19     {
20         if(good(i)) 
21         a[i]=a[i-1]+1;
22         else
23         a[i]=a[i-1];
24     }
25     int m,n;
26     while(scanf("%d%d",&m,&n)&&(m||n))
27     {
28         printf("%d\n",a[n]-a[m-1]);
29     }
30 }

 

 

posted @ 2016-07-20 17:13  野小子&  阅读(162)  评论(0编辑  收藏  举报