不要4

来源:互联网 发布:照片扫描软件手机版 编辑:程序博客网 时间:2024/05/21 03:24
#include<stdio.h>int dp[10];int a[10];int dfs(int pos,int last){    if(!pos) return 1;    if(!last&&dp[pos])  return dp[pos];    int len=last?a[pos]:9,i,ans=0;    for(i=0; i<=len; i++)        ans+=i==4?0:dfs(pos-1,last&&i==len);//只要这个数包含4就不要    if(!last) dp[pos]=ans;    return ans;}int cal(int n){    int t_n=n,len=0;    while(n)        a[++len]=n%10,n/=10;    return dfs(len,1);}int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        printf("%d\n",cal(n)-1);    }    return 0;}

0 0
原创粉丝点击