首页 > 其他 > 详细

【数位dp】bzoj2089 不要62

时间:2015-06-24 09:12:47      阅读:228      评论:0      收藏:0      [点我收藏+]

http://www.cnblogs.com/xiaohongmao/p/3473599.html

#include<cstdio>
using namespace std;
int n,m,f[8][3];
void init()
{
    f[0][0]=1;
    for(int i=1;i<=7;++i)
      {
          f[i][0]=f[i-1][0]*9-f[i-1][1];
          f[i][1]=f[i-1][0];
          f[i][2]=f[i-1][2]*10+f[i-1][0]+f[i-1][1];
      }
}
int work(int x)
{
    int ans=0,t=x,bit[10],len=0;
    while(t)
      {
          bit[++len]=t%10;
          t/=10;
      }
    bit[len+1]=bit[len+2]=0;
    bool flag=0;
    for(int i=len;i;--i)
      {
          if((bit[i+1]==2 && bit[i+2]==6) || bit[i+1]==4)
            flag=1;
          ans+=f[i-1][2]*bit[i];
          if(flag)
            ans+=bit[i]*f[i-1][0];
          else 
          {
              if(bit[i] > 6)
                  ans+=f[i-1][1];
              if(bit[i] > 4)
                  ans+=f[i-1][0];
              if(bit[i+1] == 6 && bit[i] > 2)
                  ans+=f[i][1];
          }
      }
    return x-ans;
}
int main()
{
    init();
//    freopen("hdu2089.in","r",stdin);
    while(1)
      {
          scanf("%d%d",&n,&m);
          if((!n) && (!m))
            break;
          printf("%d\n",work(m+1)-work(n));
      }
    return 0;
}

【数位dp】bzoj2089 不要62

原文:http://www.cnblogs.com/autsky-jadek/p/4596756.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!