这个题比较严重的问题就是超时.可以用数组保存数据状态来解决这个问题
下面是里程碑代码:#include<iostream> using std::cin; using std::cout; using std::endl; int number[1000000]; int main(){ int test; int n,m; memset(number,-1,sizeof(number)); while(cin>>n>>m&&(m!=0||n!=0)){ int count=0; for(int i=n;i<=m;i++){ test=0; if(number[i]!=-1){ if(number[i]==1) test=1; else test=0; } else{ int num=i; while(num!=0){ if(num%10==4||num%100==62){ test=1; number[i]=1; break; } num=num/10; } } if(test==1){ count++; } if(test==0){ number[i]=0; } } cout<<m-n+1-count<<endl; } return 0; }
#include<iostream> using namespace std; int number[1000000]; int main(){ memset(number,-1,sizeof(number)); int n,m,test; while(cin>>n>>m){ if((n==0&&m==0)||n>m) break; int count=0; for(int i=n;i<=m;i++){ test=0; if(number[i]!=-1){ if(number[i]==1) test=1; if(number[i]==0) test=0; } else{int num; num=i; while(num>0){ if((num%10==4)||(num%100==62)){ test=1;number[i]=1;break; } num/=10; } } if(test==1){ count++; } else{ // if(test=0) number[i]=0; } } cout<<m-n+1-count<<endl; } return 0; }