杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914
Input
输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。
Output
对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。
Sample Input
1 100
0 0
Sample Output
80
题目描述:
输入两个数,代表区间左右。求区间有多少个吉利数。
分析:
每个数判一下,打个表。dp[i]表示1到i有多少个吉利数。在输入区间时直接访问就行。
代码:
#include<vector> #include<algorithm> #include<cstring> #include<iostream> #define min(x,y) x<y?x:y; using namespace std; typedef long long ll; const int maxn=1e6+6; bool jili(int x) { int has2=false; while(x>0) { int gewei=x%10; if(gewei==4) { return false; } else if(gewei==2) { has2=true; } else if(gewei==6) { if(has2) return false; has2=false; } else { has2=false; } x/=10; } return true; } int main() { int dp[maxn]={0}; for(int i=1;i<1000000;i++) { if(!jili(i)) { dp[i]=dp[i-1]; } else { dp[i]=dp[i-1]+1; } } while(1) { int n,m; scanf("%d%d",&n,&m); if(n==0&&m==0) break; printf("%d\n",dp[m]-dp[n-1]); } return 0; }