幸运数字Ⅱ----------------------------思维(dfs)

在这里插入图片描述
在这里插入图片描述
解析:
打表发现 在1e9内符合要求的就1000多个

所以直接爆搜出来
然后住个计算

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100005];
int cnt;
void dfs(ll x)
{
	if(x>4444444444) return ;
	a[++cnt]=x;
	dfs(x*10+4);
	dfs(x*10+7);
 } 

int main()
{
	ll l,r;
	dfs(4);
	dfs(7);
	cin>>l>>r;
	sort(a+1,a+1+cnt); 
	ll sum=0;
	for(int i=1;i<=cnt;i++)
	{
		if(a[i]>=l)
		{
			if(a[i]<r)
			{
				sum=sum+(a[i]-l+1)*a[i];
				l=a[i]+1; 
			 }
			 else
			 {
			 	sum=sum+(r-l+1)*a[i];
			 	break;
			 }
		}
	}
	cout<<sum<<endl;
}

发布了572 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43690454/article/details/105388227