牛客(dfs&bfs)--- 幸运数字Ⅱ

题目链接:幸运数字Ⅱ

打表:

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

ll l,r,j,ans,pos;
ll k[10005],g;

void dfs(ll x) {
	if(x>4444444444) return ;
	k[g++]=x*10+4;
	k[g++]=x*10+7;
	dfs(x*10+4);
	dfs(x*10+7);
}

int main() {
	scanf("%lld %lld",&l,&r);
	dfs(0);
	sort(k,k+g);
	for(ll i=l; i<=r; i++) {
		for(j=pos; k[j]<i; j++);
		pos=j,ans+=(min(k[j],r)-i+1)*k[j];
		i=k[j];
	}
	cout<<ans<<endl;
	return 0;
}

------------恢复内容开始------------
[题目链接:幸运数字Ⅱ

打表:

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

ll l,r,j,ans,pos;
ll k[10005],g;

void dfs(ll x) {
	if(x>4444444444) return ;
	k[g++]=x*10+4;
	k[g++]=x*10+7;
	dfs(x*10+4);
	dfs(x*10+7);
}

int main() {
	scanf("%lld %lld",&l,&r);
	dfs(0);
	sort(k,k+g);
	for(ll i=l; i<=r; i++) {
		for(j=pos; k[j]<i; j++);
		pos=j,ans+=(min(k[j],r)-i+1)*k[j];
		i=k[j];
	}
	cout<<ans<<endl;
	return 0;
}

------------恢复内容结束------------

原文地址:https://www.cnblogs.com/bingers/p/13198329.html