Description

666号被认为是神秘的“野兽之数”,在所有以启示录为主题的大片中都是一个被广泛使用的数字。但是,这个数字666不能总是在脚本中使用,所以应该使用1666这样的数字。让我们把至少包含三个连续的六位数字的数字称为可怕的数字。头几个可怕的数字是666,1666,2666,3666,4666,5666…

给定一个基于1的索引n,程序应该返回第n个可怕的数字。

Input

第一行包含测试用例的数量t(t≤1000)。

以下每一个t行包含一个整数n(1≤n≤50000000)作为测试用例。

Output

对于每个测试用例,您的程序应该输出第n个糟糕的数字。

Sample Input

3

2

3

187

Sample Output

1666

2666

66666

这题的\(T\)比较小,我们考虑二分第\(n\)个可怕的数。

数位DP求出这个数字之前有几个可怕的数。

#include<bits/stdc++.h>
using namespace std;
int dp[101][2][2][2],n,x,a[101],cnt,t;
int get_ans(int wei,int st,int nd,int six,int ding)
{
if(!wei)
{
return six;
}
if(!ding&&dp[wei][st][nd][six])
{
return dp[wei][st][nd][six];
}
int up=ding?a[wei]:9,ans=0;
for(int i=0;i<=up;i++)
{
if(six)
{
ans+=get_ans(wei-1,i==6,st,1,ding&&(i==up));
}else{
ans+=get_ans(wei-1,i==6,st,st&&nd&&i==6,ding&&(i==up));
}
}
if(!ding)
{
dp[wei][st][nd][six]=ans;
}
return ans;
}
int check(long long x)
{
cnt=0;
while(x)
{
a[++cnt]=x%10;
x/=10;
}
return get_ans(cnt,0,0,0,1);
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&x);
long long l=1,r=100000000000;
while(l<=r)
{
long long mid=(l+r)/2;
if(check(mid)<x)
{
l=mid+1;
}else{
r=mid-1;
}
}
printf("%lld\n",l);
}
return 0;
}

【POJ3208】Apocalypse Someday的更多相关文章

  1. 【POJ3208】 (DP)

    Apocalypse Someday Description The number 666 is considered to be the occult “number of the beast” a ...

  2. POJ3208:Apocalypse Someday

    传送门 很神奇的一道题,正解是AC自动机+数位DP,个人感觉POPOQQQ大爷的方法更方便理解. 按照一般套路,先搞个DP预处理,设$f[i][0/1/2/3]$分别表示对于$i$位数,其中有多少个前 ...

  3. poj3208 Apocalypse Someday 数位dp+二分 求第K(K <= 5*107)个有连续3个6的数。

    /** 题目:poj3208 Apocalypse Someday 链接:http://poj.org/problem?id=3208 题意:求第K(K <= 5*107)个有连续3个6的数. ...

  4. POJ3208 Apocalypse Someday

    题意 Language:Default Apocalypse Someday Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 2 ...

  5. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  6. 【POJ2482】【线段树】Stars in Your Window

    Description Fleeting time does not blur my memory of you. Can it really be 4 years since I first saw ...

  7. 【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)

    全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...

  8. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  9. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

随机推荐

  1. 基于 HTML5 WebGL 的垃圾分类系统

    前言 垃圾分类,一般是指按一定规定或标准将垃圾分类储存.分类投放和分类搬运,从而转变成公共资源的一系列活动的总称.分类的目的是提高垃圾的资源价值和经济价值,力争物尽其用.垃圾在分类储存阶段属于公众的私 ...

  2. Windows定时备份Mysql数据库

    1.新建批处理文件bat(随意命名:如auto_backup_mysql_data.bat) 2.在批处理文件里添加如下命令 %1 mshta vbscript:createobject(" ...

  3. yii2 rules 规则

    required : 必须值验证属性 [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; #说明:CRequiredV ...

  4. 自创ant-design-pro组件

    ant design蚂蚁金服基于react打造的一个服务于企业级产品的UI框架.而ant design pro呢?就是基于Ant Design这个框架搭建的中后台管理控制台的脚手架. 话不多说,今天给 ...

  5. Python开发专属壁纸下载与轮换程序

    本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸.因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家. 原文链接:https://www.codernice.top ...

  6. 基于Prometheus和Grafana的监控平台 - 环境搭建

    相关概念 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics. Logging - 用于记录离散的事件.例如,应用程序的调试信息或错误信息.它是我们诊断问题的依据. ...

  7. Bran的内核开发教程(bkerndev)-02 准备工作

    准备工作   内核开发是编写代码以及调试各种系统组件的漫长过程.一开始这似乎是一个让人畏惧的任务,但是并不需要大量的工具集来编写自己的内核.这个内核开发教程主要涉及使用GRUB将内核加载到内存中.GR ...

  8. Windows API 编程入门

    Windows 工作原理的中心思想就是“动态链接”概念.Windows 自身带有一大套函数,应用程序就是通过调用这些函数 来实现它的用户界面和在屏幕上显示文本和图形的.这些函数都是在动态链接库里实现的 ...

  9. phpstudy后门rce批量利用脚本

    写两个 一个批量检测的  一个交互式shell的 暂时py  图形化的qt写出来..有点问题 后门包 : GET / HTTP/1.1Host: 127.0.0.1User-Agent: Mozill ...

  10. comparator接口实现时,只需要实现 int compare(T o1, T o2)方法?

    从Comparator接口的源码,可以看到Comparator接口中的方法有三类: 1 普通接口方法 2 default方法 3 static方法 其中default方法和static方法 是java ...