牛客小白月赛7-D 明七暗七

牛客小白月赛7-D 明七暗七_第1张图片

地址:https://www.nowcoder.com/acm/contest/190/D

思路:数位DP+二分。利用数位DP可以求出从1到n的满足条件的个数,而对于求具体的数字,则可以用二分查找来求解

dp[i][j][k]: 前i位余数为j,是否有7的个数

 

Code:

#include
#include
using namespace std;
typedef long long LL;

LL n,m;
int a[20];
LL dp[20][10][2];

LL Find(LL p);
LL DFS(int k,int mod,int boo,int bo);
int main()
{
	ios::sync_with_stdio(false);
	while(cin>>n>>m){
		memset(dp,-1,sizeof(dp));
		LL l=n,r=1e14,t=Find(n);
		while(l<=r){
			LL h=(l+r)/2;
			if(Find(h)-t>=m)	r=h-1;
			else	l=h+1;
		}
		cout<

 

你可能感兴趣的:(算法,DP,数位DP,牛客,二分)