hdu2089不要62(数位dp)

 #include <stdio.h>
#include <string.h>
int dp[][];
int num[];
/*
dp[i][0] 不含62,4
dp[i][1] 2开头
dp[i][2] 含62或4
*/
void init()
{
int i;
dp[][] = ;
for(i=; i<; ++i)
{
dp[i][] = dp[i-][] * - dp[i-][];
dp[i][] = dp[i-][];
dp[i][] = dp[i-][] * + dp[i-][] + dp[i-][];
}
}
int getAns(int n)
{
int i,len=,ans=;
int t = n;
while(n)
{
num[++len] = n % ;
n /= ;
}
num[len+] = ;
bool flag = false; for(i=len; i>=; --i)
{
ans += num[i] * dp[i-][];
if(flag)
{
ans += num[i] * dp[i-][];
}
else if(num[i]>)//当前为取4
ans += dp[i-][];
if(!flag && num[i]>)//当前位取6
ans += dp[i-][];
if(!flag && num[i+]==&&num[i]>)
ans += dp[i][];
if(num[i+]== && num[i]==)
flag = true;
if(num[i]==)
flag = true;
} return ans;
}
int main()
{
int n,m;
init();
while(scanf("%d%d",&n,&m))
{
if(n== && m==)
break; int t = getAns(m+) - getAns(n);
printf("%d\n",m-n+-t);
}
return ;
}
上一篇:Win64位操作系统无法运行暗黑2战网D2GS的解决办法


下一篇:spring @Resource和@Autowired的区别