不是VIP会员,不能显示答案

题目解答

题目:
#include <iostream>

#include <cstring>

#define LL long long

using namespace std;

LL l, r;

LL f[12][10][10][2][2][2], a[20];

LL Dfs(LL now, LL p, LL pp, LL _4, LL _8, LL top, LL hw) {

if(_4 && _8)

return 0;

if (!now)

return hw;

if(!top && f[now][p][pp][_4][_8][hw]!=-1)

return f[now][p][pp][_4][_8][hw];

LL Up= top?a[now]: 9;

LL ret(0);

for(LL i=0; r<= Up; ++i)

ret += Dfs(now-1,i,p,_4|(i==4),_8|(i==8),

top&&(i==Up), hw|(i==pp&&i==p));

if(!top)

f[now][p][pp][_4][_8][hw]= ret;

return ret ;

}

inline LL Solve(LL x) {

LL tot(0);

while (x) {

a[++tot]= x% 10;

x/= 10;

}

if(tot != 11)

return 0;

LL ret(0);

for (LL i= 1; i<= a[tot]; ++i)

ret +=Dfs(tot-1,i,0,(i==4),(i==8),i==a[tot],0);

return ret;

}

int main() {

cin>>l>>r;

memset(f,-1,sizeof(f));

cout<< Solve(r) - Solve(l-1);

return 0;

}


判断题

1) 同时包含4和8的数字都不可能被统计。(

2) 相邻数位中,位中。超过3个数位相同的数字都不可能被统计。( )




选择题

3) (4分)下列哪个是合法(可能会被优计)的数字?( )

4) (5分)当输入12121000 12121350时1序输出结果为( )
考点:
分析:
解答:
评论:
老师: