转载:http://blog.csdn.net/wdcjdtc/article/details/39177905
#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#include"algorithm"
#include"iostream"
using namespace std;
__int64 dp[22][22][22]; //i位含有j个4 k个7 的有多少个
int num[22];
__int64 dfs(int site,int a,int b,int f,int x,int y)
{
if(site==0)
{
if(a==x&&b==y) return 1;
return 0;
}
if(!f&&dp[site][a][b]!=-1) return dp[site][a][b];
int len=f?num[site]:9;
__int64 ans=0;
for(int i=0;i<=len;i++)
{
if(i==4) ans+=dfs(site-1,a+1,b,f&&i==len,x,y);
else if(i==7) ans+=dfs(site-1,a,b+1,f&&i==len,x,y);
else ans+=dfs(site-1,a,b,f&&i==len,x,y);
}
if(!f) dp[site][a][b]=ans;
return ans;
}
__int64 solve(__int64 a,int x,int y)
{
int cnt=0;
while(a)
{
num[++cnt]=a%10;
a/=10;
}
return dfs(cnt,0,0,1,x,y);
}
int main()
{
int t,cas=1;
cin>>t;
while(t--)
{
__int64 p,q;
int x,y;
scanf("%I64d%I64d%d%d",&p,&q,&x,&y);
memset(dp,-1,sizeof(dp));
int n;
scanf("%d",&n);
printf("Case #%d:\n",cas++);
while(n--)
{
__int64 k,s;
__int64 ans=-1;
s=solve(p,x,y);
scanf("%I64d",&k);
s+=k;
__int64 l=p+1,r=q;
while(l<=r) //利用个数进行二分来确定第几个,最小满足的那个数就是第几个
{
__int64 mid=(l+r)/2;
if(solve(mid,x,y)>=s)
{
ans=mid;
r=mid-1;
}
else l=mid+1;
}
if(ans!=-1) printf("%I64d\n",ans);
else puts("Nya!");
}
}
return 0;
}

最新文章

  1. Linux process vs thread
  2. 【Windows编程】系列第五篇:GDI图形绘制
  3. Git 本地项目上传至托管平台(OsChina/GitHub)
  4. URL Scheme APP跳转safari以及跳回APP
  5. Axure7.0中文汉化语言包下载 axure汉化包
  6. mvc5入门示例博客(有惊喜)
  7. 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) 几道简单题的题解
  8. ORACLE快速彻底Kill掉的会话(转载)
  9. 在DNS管理器——用局域网IP指定你所起的域名名称
  10. MYSQL中delete删除多表数据
  11. windows下跑python flask,环境配置
  12. UVA 12661 Funny Car Racing 有趣的赛车比赛(最短路,变形)
  13. call, apply, bind作用
  14. C# Best Practices - Accessing and Using Classes
  15. Server SAN:弄潮儿云计算时代
  16. Jquery遍历数组之$().each()方法和$.each()方法
  17. __str__与__repr__
  18. BlockChain 的跨链技术的重要性和必要性
  19. 【Codeforces Round 1129】Alex Lopashev Thanks-Round (Div. 1)
  20. mysql rc模式时binlog_format=row的解释【转】

热门文章

  1. import android.support.v4或者import android.support.v7提示导入错误解决办法
  2. 关于python2.7的md5加密遇到的问题(TypeError: Unicode-objects must be encoded before hashing)
  3. AJPFX总结面向对象思想设计原则
  4. win7打开网络看不到局域网的其他电脑
  5. 【译】x86程序员手册37-第10章 初始化
  6. SqlServer2012学习 - 基本数据类型认知
  7. Beam Search
  8. 简单的学生选课系统——基于Servlet+Ajax
  9. forEach的使用方法
  10. Mysql对象