打表法的经典问题

xiaoxiao2021-02-28  119

#include<stdio.h>  #define M 1000000+100 int mei[M]; int check(int n) { char s[100]; sprintf(s,"%d",n);  // 将数字转化为 字符串格式  for(int i=0;s[i]!='\0';i++) { if(s[i]=='4') return 0; if(s[i]=='6'&&s[i+1]=='2') return 0; } return 1; } void dabiao()   { int i,j; mei[0]=0;mei[1]=1;   for(i=2;i<M;i++) { if(check(i)) mei[i]=mei[i-1]+1; else mei[i]=mei[i-1]; } } int main() {   int n,m;   dabiao();   while(~scanf("%d%d",&n,&m)&&(n||m))   printf("%d\n",mei[m]-mei[n-1]); return 0; }
转载请注明原文地址: https://www.6miu.com/read-69634.html

最新回复(0)