链接:https://nanti.jisuanke.com/t/35618

题意:

如果一个数大于等于 1010 且任意连续两位都是质数,那么就称之为 Wish 数。当然,第一个 Wish 数是 1111。

比如 9797,111111,131131,119119 都是 Wish 数,而 1212,136136 则不是。问第 NN 个 Wish 数是多少。

思路:预处理一下  1 -  9 每个数后面可以跟的能够与它组成两位数字并且为素数的数字。

dp[ i ] [ j ]  i 的含义是 i 长度为i 的数字,开头为 j 的 wish 数,那么他就可以由 dp [ i - 1] [ 预处理的 g[ j ]  ]转移而来

需要cnt  [ i ]存储的是 长度为 i 的总数 ,最后根据n 去具体定位那个数,可以先确定是个几位数 。然后从 高位开始确定每一位数字是什么。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 123
vector<int>g[123],ans;
ll n,cnt[maxn+1],sum,x;
ll dp[maxn+10][13];
bool isprime[maxn+10];
void getprim()
{
isprime[0]=isprime[1]=1;
for(int i=2; i<=sqrt(maxn); i++)
for(int j=i*i; j<maxn; j+=i)
isprime[j]=1;
}
int main()
{
getprim();
scanf("%lld",&n);
for(int i=1; i<10; i++)
for(int j=1; j<10; j++)
if(isprime[i*10+j]==0)g[i].push_back(j);
for(int i=1; i<10; i++)g[10].push_back(i);
for(int i=2; i<50; i++)
for(int j=1; j<10; j++)
{
for(int k=0; k<g[j].size(); k++)
dp[i][j]+=(i==2?1:dp[i-1][g[j][k]]);
cnt[i]+=dp[i][j];
}
for(int i=2; i<50; i++)
{
if(sum+cnt[i]<n)
sum+=cnt[i];
else
{
n-=sum;
x=10;
for(int k=i; k>=2; k--)
for(int u=0; u<g[x].size(); u++)
{
int v=g[x][u];
if(n-dp[k][v]<=0)
{
ans.push_back(v);
x=v;
break;
}
else
n-=dp[k][v];
}
ans.push_back(g[x][n-1]);
break;
}
}
for(int i=0; i<ans.size(); i++)
printf("%d",ans[i]);
printf("\n");
return 0;
}

  

Wish-递推DP记数的更多相关文章

  1. 递推DP URAL 1167 Bicolored Horses

    题目传送门 题意:k个马棚,n条马,黑马1, 白马0,每个马棚unhappy指数:黑马数*白马数,问最小的unhappy值是多少分析:dp[i][j] 表示第i个马棚放j只马的最小unhappy值,状 ...

  2. 递推DP URAL 1017 Staircases

    题目传送门 /* 题意:给n块砖头,问能组成多少个楼梯,楼梯至少两层,且每层至少一块砖头,层与层之间数目不能相等! 递推DP:dp[i][j] 表示总共i块砖头,最后一列的砖头数是j块的方案数 状态转 ...

  3. 递推DP URAL 1260 Nudnik Photographer

    题目传送门 /* 递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数 */ #include <cstdio> #include <algorithm> ...

  4. 递推DP 赛码 1005 Game

    题目传送门 /* 递推DP:官方题解 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩 ...

  5. 递推DP UVA 607 Scheduling Lectures

    题目传送门 题意:教授给学生上课,有n个主题,每个主题有ti时间,上课有两个限制:1. 每个主题只能在一节课内讲完,不能分开在多节课:2. 必须按主题顺序讲,不能打乱.一节课L时间,如果提前下课了,按 ...

  6. 【HDUOJ】几道递推DP

    就不写题解了.很基础的递推. HDU2084数塔 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 代码: #include <iostre ...

  7. poj 2229 【完全背包dp】【递推dp】

    poj 2229 Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 21281   Accepted: 828 ...

  8. Code Force 429B Working out【递推dp】

    Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ...

  9. 递推DP URAL 1353 Milliard Vasya's Function

    题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...

随机推荐

  1. 0426JavaSE01day02.txt=========正则、Object、包装类详解

    正则表达式 基本正则表达式:正则表达式简介.分组(). "^"和"$" String正则API:matches方法.split方法.replaceAll方法 O ...

  2. Window7 定制 Explore中的右键菜单

    win+R 命令  运行 regedit ,打开注册表 在  HKEY_CLASSES_ROOT\*\shell\VisualCode下创建针对文件的新增命令 command 在HKEY_CLASSE ...

  3. iTOP-4418开发板Android 5.1/4.4丨Linux + Qt5.7丨Ubuntu12.04系统

    核心板参数 尺寸:50mm*60mm 高度:核心板连接器组合高度1.5mm PCB层数:6层PCB沉金设计 4418 CPU:ARM Cortex-A9 四核 S5P4418处理器 1.4GHz 68 ...

  4. Coursera, Big Data 4, Machine Learning With Big Data (week 3/4/5)

    week 3 Classification KNN :基本思想是 input value 类似,就可能是同一类的 Decision Tree Naive Bayes Week 4 Evaluating ...

  5. Intelij idea 版本控制工具窗口

    1. 在菜单栏vcs中启用版本控制 2. 然后调出工具窗口,view-tools window-version control

  6. PLSQL Developer导入dmp文件,一闪而过

    在导入数据的时候,一闪而过,也没有任何报错信息. 在环境变量里添加ORACLE_HOME=D:\app\product\11.2.0\dbhome_1就行,此路径是指oracle安装路径.我是用这种方 ...

  7. 关于URL隐藏index.php方法

    在phpstudy上修改了php版本5.6以上后,tp5框架原URL重写模式发生变化.需要在public目录下的.htaccess作出如图修改,原理未知.

  8. rabbitmq - (消息队列) 的基本原理介绍

    介绍 MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订 ...

  9. 【interview】汉诺塔学递归

    https://www.cnblogs.com/yanlingyin/archive/2011/11/14/2247594.html https://www.cnblogs.com/dmego/p/5 ...

  10. 【easy】278. First Bad Version

    有一系列产品,从某个开始其后都不合格,给定一个判断是否合格的函数,找出N个产品中第一个不合格的产品. 正确答案: // Forward declaration of isBadVersion API. ...