打表法的实例:洗澡

来源:互联网 发布:怎么用sql创建数据库 编辑:程序博客网 时间:2024/04/27 17:31

  1. #define max 50010  
  2. int a[max]={0};  
  3.   
  4. void count()  
  5. {  
  6.     int i;  
  7.     for(i=1;i<max;i++)  
  8.     {  
  9.         int t=0;  
  10.         int n=i;
  11.          while(n)  
  12.          {  
  13.             if(n%10==4)  
  14.             {  
  15.                 t=1;  
  16.                 break;  
  17.             }  
  18.             n=n/10;  
  19.          }  
  20.          if(t==1)  
  21.            a[i]=a[i-1];  
  22.         else  
  23.            a[i]=a[i-1]+1;  
  24.     }  
  25. }  
  26.   
  27. int main()  
  28. {  
  29.     count();  
  30.     int n;  
  31.     while(scanf("%d",&n)!=EOF)  
  32.        printf("%d\n",a[n]);  
  33.     return 0;  

  34. 打表法的意思就是这种需要求某个范围内符合某种要求的数值,第一次求出来1000以内的了,然后就存储起来,下次小于1000可以直接输出,如果下次大于1000,比如3000,那就从1000开始求起。

0 0