Fragrant numbers【DP打表】

题目链接


Fragrant numbers【DP打表】_第1张图片


题意:用无限长的“1145141919”经过加、乘、括号、直接组成数字这四类方法用最短的前缀组成规定的数字。

  首先,用dfs爆搜来进行初步估算,可以看出答案不会超过11,或者用穷举答案来看,如果存在非“3、7”的“-1”项,说明答案错了,扩大来看就可以了。

  于是,我们就可以推个dp来进行打表了,我们用dp[i][j][k]表示,1 \leq i \leq 11,1 \leq j \leq 11, 1 \leq k\leq 5000来表示区间[i, j]中,是否可以组成权值k的答案,然后我们推这样的一个区间dp就可以了。

打表程序:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
int a[] = {0, 1, 1, 4, 5, 1, 4, 1, 9, 1, 9, 1, 1, 4, 5, 1};
bool dp[14][14][5007] = {false};
inline bool check(int x) { return x <= 5000 && x >= 0; }
inline int Merge(int l, int r) { if(r - l > 4) return INF; int ans = 0; for(int i=l; i<=r; i++) ans = ans * 10 + a[i]; return ans; }
void solve()
{
    dp[1][1][a[1]] = true;
    for(int i=2; i<=12; i++)
    {
        dp[i][i][a[i]] = true;
        for(int j=i - 1; j >= 1; j--)
        {
            if(check(Merge(j, i))) dp[j][i][Merge(j, i)] = true;
            for(int k=j; k

答案程序:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
int a[] = {1, 2, -1, 3, 3, 3, -1, 3, 4, 4, 2, 5, 4, 3, 3, 6, 6, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 6, 6, 4, 4, 5, 6, 6, 5, 5, 6, 6, 6, 4, 5, 5, 7, 3, 4, 4, 4, 5, 4, 5, 6, 6, 6, 6, 5, 4, 5, 6, 5, 6, 6, 7, 6, 6, 5, 5, 7, 6, 6, 4, 4, 5, 7, 6, 4, 5, 6, 6, 6, 6, 6, 6, 7, 5, 5, 6, 6, 6, 6, 4, 5, 5, 7, 6, 5, 6, 6, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 5, 6, 7, 6, 3, 7, 7, 7, 6, 4, 5, 6, 7, 6, 6, 6, 6, 6, 6, 7, 6, 7, 7, 6, 6, 6, 7, 6, 6, 6, 6, 6, 7, 6, 6, 4, 4, 5, 6, 6, 6, 6, 6, 7, 6, 6, 7, 8, 7, 6, 6, 7, 7, 7, 6, 5, 7, 7, 6, 6, 7, 7, 7, 8, 7, 7, 8, 8, 8, 8, 6, 6, 6, 7, 6, 6, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 6, 7, 8, 7, 6, 7, 7, 8, 5, 5, 5, 8, 6, 6, 6, 7, 6, 7, 7, 5, 7, 8, 6, 6, 4, 5, 6, 7, 6, 6, 6, 6, 6, 7, 6, 5, 7, 8, 6, 6, 6, 7, 8, 8, 7, 7, 8, 8, 8, 6, 7, 7, 6, 7, 7, 7, 6, 6, 7, 5, 5, 8, 8, 6, 6, 6, 7, 7, 5, 7, 6, 6, 6, 7, 7, 7, 7, 8, 8, 6, 6, 7, 8, 8, 6, 6, 6, 7, 6, 6, 7, 7, 6, 7, 7, 6, 7, 8, 6, 6, 7, 7, 8, 7, 6, 7, 7, 8, 6, 7, 5, 8, 6, 7, 6, 7, 8, 8, 8, 7, 7, 8, 6, 6, 7, 8, 7, 8, 7, 7, 7, 8, 8, 8, 6, 7, 8, 8, 8, 8, 6, 6, 7, 8, 6, 7, 8, 8, 8, 8, 8, 7, 8, 8, 6, 6, 7, 9, 8, 6, 7, 8, 8, 8, 6, 7, 7, 8, 6, 7, 8, 8, 6, 7, 7, 7, 7, 8, 6, 6, 7, 8, 7, 7, 6, 7, 8, 8, 8, 7, 8, 8, 8, 7, 7, 8, 8, 8, 8, 8, 6, 7, 8, 8, 6, 7, 8, 8, 8, 8, 8, 7, 5, 8, 7, 7, 6, 7, 8, 8, 6, 7, 7, 8, 6, 7, 8, 8, 8, 7, 7, 8, 7, 8, 8, 8, 8, 8, 6, 7, 8, 8, 8, 8, 6, 7, 7, 8, 8, 8, 8, 9, 7, 7, 6, 5, 5, 5, 8, 6, 6, 6, 7, 8, 7, 7, 5, 8, 8, 7, 6, 7, 8, 8, 8, 8, 8, 8, 8, 7, 6, 7, 8, 8, 6, 7, 8, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 7, 7, 4, 5, 8, 8, 6, 6, 7, 8, 7, 8, 8, 5, 8, 8, 6, 6, 7, 8, 8, 8, 8, 8, 8, 6, 6, 6, 7, 6, 7, 8, 8, 8, 8, 6, 6, 7, 8, 8, 7, 8, 8, 7, 7, 8, 6, 7, 8, 8, 8, 9, 8, 7, 7, 8, 8, 6, 7, 7, 8, 8, 8, 8, 9, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 7, 8, 4, 5, 8, 8, 6, 6, 7, 8, 8, 8, 6, 6, 7, 8, 6, 6, 7, 8, 6, 7, 8, 8, 8, 8, 7, 6, 7, 8, 8, 8, 7, 8, 8, 8, 8, 5, 8, 8, 8, 6, 7, 7, 7, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 6, 7, 6, 6, 6, 7, 8, 8, 7, 8, 8, 8, 8, 6, 7, 8, 6, 6, 7, 8, 8, 6, 7, 8, 9, 8, 8, 8, 8, 8, 6, 7, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 9, 8, 7, 7, 7, 8, 8, 8, 8, 7, 8, 5, 8, 6, 7, 6, 7, 7, 7, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 7, 7, 7, 8, 7, 5, 5, 8, 8, 6, 6, 7, 8, 8, 8, 8, 6, 6, 7, 8, 8, 6, 7, 9, 9, 8, 7, 7, 8, 7, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 7, 8, 8, 9, 8, 8, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8, 5, 8, 8, 8, 6, 6, 6, 7, 9, 8, 8, 8, 8, 8, 7, 7, 8, 9, 8, 6, 7, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 7, 7, 8, 8, 8, 8, 9, 8, 7, 8, 8, 9, 8, 8, 9, 9, 6, 7, 6, 6, 6, 7, 6, 6, 7, 8, 6, 6, 7, 6, 7, 8, 8, 7, 8, 8, 8, 8, 6, 7, 8, 8, 7, 7, 7, 8, 8, 8, 8, 7, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7, 8, 8, 8, 8, 9, 7, 7, 7, 7, 8, 8, 8, 7, 8, 8, 8, 6, 7, 7, 7, 6, 7, 8, 8, 9, 8, 8, 7, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8, 5, 7, 9, 9, 6, 7, 9, 8, 6, 7, 7, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 9, 8, 7, 8, 8, 7, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 7, 8, 9, 8, 8, 8, 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 9, 8, 8, 6, 6, 7, 9, 7, 7, 7, 9, 8, 8, 8, 8, 8, 8, 6, 7, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 8, 9, 9, 6, 6, 7, 8, 6, 7, 6, 7, 9, 8, 7, 7, 9, 8, 8, 8, 6, 7, 7, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 6, 7, 8, 8, 8, 8, 6, 7, 8, 8, 8, 8, 8, 9, 8, 7, 7, 7, 9, 8, 8, 8, 8, 9, 8, 7, 8, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 8, 8, 7, 8, 9, 8, 8, 9, 8, 9, 6, 7, 8, 8, 8, 7, 8, 7, 8, 8, 8, 7, 9, 9, 8, 8, 8, 9, 9, 8, 8, 8, 8, 8, 9, 7, 8, 8, 8, 9, 8, 9, 8, 8, 8, 8, 8, 9, 10, 9, 6, 7, 9, 8, 7, 4, 5, 8, 8, 6, 6, 7, 8, 8, 8, 7, 9, 9, 8, 6, 7, 8, 9, 9, 8, 9, 8, 9, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 8, 9, 8, 8, 9, 10, 9, 8, 8, 8, 9, 8, 8, 8, 8, 9, 9, 9, 8, 9, 9, 10, 8, 8, 9, 10, 9, 8, 8, 8, 8, 8, 9, 8, 8, 9, 6, 7, 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 9, 10, 9, 8, 8, 9, 8, 8, 9, 9, 8, 8, 9, 10, 8, 8, 9, 10, 7, 9, 9, 10, 10, 9, 6, 7, 7, 8, 9, 8, 8, 8, 8, 7, 7, 7, 9, 10, 8, 7, 7, 9, 8, 8, 7, 9, 8, 9, 8, 8, 7, 8, 7, 7, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 7, 10, 9, 8, 9, 9, 9, 8, 9, 8, 7, 9, 8, 8, 8, 9, 8, 8, 7, 8, 8, 9, 10, 8, 8, 9, 8, 8, 8, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 8, 8, 9, 8, 8, 9, 10, 9, 9, 7, 8, 8, 9, 10, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 8, 9, 9, 8, 9, 8, 9, 10, 9, 8, 9, 9, 8, 9, 9, 7, 9, 10, 9, 9, 9, 6, 7, 8, 8, 8, 9, 10, 9, 10, 8, 8, 7, 9, 10, 8, 8, 9, 9, 8, 8, 8, 8, 8, 9, 7, 7, 9, 10, 8, 8, 9, 8, 7, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 10, 8, 8, 8, 9, 9, 8, 8, 5, 5, 9, 10, 6, 6, 7, 8, 8, 8, 9, 10, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 8, 8, 7, 9, 9, 9, 8, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 7, 7, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8, 9, 9, 9, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 9, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, 9, 7, 8, 8, 8, 8, 9, 9, 9, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, 9, 8, 7, 9, 10, 9, 9, 9, 10, 8, 9, 8, 9, 8, 9, 8, 8, 8, 9, 9, 9, 9, 9, 10, 9, 9, 8, 9, 9, 10, 10, 9, 8, 9, 9, 8, 9, 10, 10, 10, 10, 8, 8, 9, 10, 10, 8, 8, 8, 8, 9, 8, 9, 9, 10, 10, 9, 8, 8, 9, 10, 8, 8, 9, 10, 10, 8, 8, 8, 8, 9, 8, 8, 8, 9, 9, 9, 8, 9, 9, 8, 8, 8, 6, 7, 7, 9, 10, 10, 8, 8, 7, 8, 8, 8, 9, 10, 9, 8, 9, 8, 7, 8, 8, 8, 9, 10, 8, 8, 8, 8, 9, 9, 9, 10, 8, 8, 6, 7, 9, 10, 8, 9, 8, 8, 8, 8, 8, 9, 9, 10, 7, 7, 8, 8, 8, 8, 9, 9, 9, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 9, 8, 9, 10, 8, 8, 8, 9, 9, 9, 8, 9, 10, 8, 9, 9, 7, 9, 9, 8, 9, 9, 8, 8, 9, 8, 9, 9, 9, 9, 9, 8, 9, 8, 8, 9, 9, 9, 9, 10, 8, 9, 8, 8, 8, 9, 8, 9, 9, 8, 9, 9, 9, 10, 8, 9, 9, 9, 8, 9, 9, 10, 9, 9, 9, 7, 9, 8, 9, 9, 9, 10, 8, 8, 8, 9, 9, 9, 8, 7, 8, 9, 10, 10, 10, 8, 9, 9, 8, 9, 10, 10, 10, 10, 8, 8, 8, 9, 6, 6, 6, 7, 6, 6, 7, 8, 6, 7, 8, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 9, 7, 8, 8, 9, 9, 10, 8, 8, 8, 8, 8, 8, 7, 7, 7, 6, 7, 8, 8, 9, 8, 8, 8, 7, 8, 8, 8, 8, 9, 8, 9, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 10, 10, 8, 8, 8, 8, 9, 8, 7, 7, 7, 8, 7, 7, 7, 9, 8, 8, 8, 7, 8, 8, 8, 7, 8, 9, 8, 8, 8, 9, 8, 9, 8, 8, 9, 10, 8, 8, 8, 8, 9, 8, 8, 9, 9, 10, 9, 8, 8, 7, 7, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 9, 9, 8, 8, 9, 8, 9, 9, 9, 10, 10, 8, 9, 9, 10, 9, 8, 9, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 10, 7, 9, 9, 8, 8, 9, 7, 9, 8, 8, 9, 9, 6, 7, 8, 8, 6, 7, 8, 9, 9, 8, 8, 7, 9, 8, 8, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 9, 9, 8, 9, 7, 9, 9, 10, 10, 8, 9, 8, 8, 8, 9, 9, 9, 9, 9, 6, 7, 8, 8, 9, 10, 6, 6, 7, 8, 8, 7, 8, 9, 9, 8, 7, 8, 9, 8, 6, 7, 7, 9, 8, 8, 7, 9, 8, 8, 8, 8, 6, 6, 6, 7, 7, 7, 7, 8, 9, 8, 8, 6, 7, 8, 8, 7, 8, 9, 10, 8, 8, 8, 9, 8, 8, 8, 8, 9, 8, 9, 8, 9, 8, 9, 8, 8, 8, 8, 8, 7, 7, 7, 8, 7, 8, 8, 9, 8, 8, 7, 7, 8, 8, 8, 8, 9, 8, 9, 8, 8, 8, 8, 9, 9, 8, 8, 9, 8, 8, 8, 8, 9, 9, 10, 9, 9, 8, 8, 8, 7, 9, 9, 9, 8, 9, 9, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9, 10, 9, 9, 8, 9, 8, 9, 9, 10, 6, 7, 8, 8, 8, 8, 9, 10, 10, 7, 7, 9, 9, 10, 8, 8, 9, 9, 8, 8, 9, 9, 9, 8, 7, 9, 9, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 8, 8, 8, 9, 9, 8, 8, 8, 9, 8, 8, 8, 9, 8, 8, 9, 9, 9, 9, 8, 8, 9, 10, 8, 8, 9, 9, 10, 10, 9, 10, 8, 8, 8, 9, 5, 9, 10, 9, 6, 7, 8, 8, 8, 9, 8, 7, 7, 7, 8, 8, 7, 7, 9, 10, 8, 7, 7, 8, 8, 8, 8, 9, 10, 10, 8, 8, 9, 8, 9, 9, 6, 7, 9, 9, 6, 7, 8, 9, 6, 7, 8, 9, 10, 8, 8, 8, 7, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 9, 10, 9, 9, 9, 10, 10, 8, 8, 9, 9, 10, 9, 8, 9, 10, 8, 9, 10, 8, 8, 8, 9, 10, 9, 7, 9, 8, 8, 8, 8, 8, 9, 10, 8, 8, 9, 8, 8, 8, 7, 10, 7, 9, 8, 9, 8, 9, 8, 8, 9, 8, 9, 9, 9, 8, 9, 10, 9, 9, 9, 10, 9, 8, 8, 9, 10, 9, 9, 9, 10, 10, 10, 8, 9, 8, 9, 9, 9, 10, 9, 9, 7, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 9, 10, 9, 8, 9, 10, 8, 8, 8, 9, 10, 10, 9, 7, 6, 7, 8, 9, 9, 9, 9, 10, 8, 8, 8, 7, 8, 9, 10, 9, 10, 10, 10, 8, 8, 8, 9, 9, 9, 9, 10, 10, 8, 9, 8, 9, 9, 8, 9, 10, 9, 9, 9, 10, 9, 9, 10, 10, 7, 9, 9, 10, 9, 10, 8, 9, 10, 8, 9, 6, 7, 8, 9, 9, 7, 9, 10, 9, 8, 8, 7, 9, 10, 8, 9, 10, 10, 8, 8, 8, 9, 8, 9, 8, 8, 9, 9, 10, 9, 10, 10, 10, 9, 9, 9, 9, 9, 10, 9, 10, 10, 10, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 7, 8, 9, 10, 9, 9, 10, 10, 7, 8, 8, 9, 9, 10, 8, 9, 8, 8, 9, 9, 8, 9, 9, 10, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 10, 6, 6, 7, 10, 8, 7, 7, 9, 8, 8, 8, 8, 9, 8, 8, 8, 9, 9, 9, 8, 8, 8, 8, 9, 8, 9, 8, 9, 10, 10, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9, 8, 9, 8, 8, 9, 8, 8, 8, 8, 8, 9, 10, 9, 9, 8, 8, 8, 9, 10, 9, 10, 9, 10, 8, 9, 9, 9, 8, 8, 9, 10, 10, 9, 8, 8, 9, 10, 9, 9, 8, 8, 8, 8, 8, 9, 9, 10, 8, 8, 9, 8, 8, 7, 7, 9, 8, 9, 8, 9, 10, 8, 8, 8, 9, 10, 8, 7, 7, 9, 10, 9, 8, 9, 10, 9, 8, 8, 9, 8, 9, 9, 9, 7, 9, 10, 9, 9, 8, 8, 8, 9, 8, 9, 7, 10, 10, 8, 8, 8, 9, 10, 9, 8, 9, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 9, 10, 9, 9, 9, 10, 9, 9, 6, 7, 9, 8, 9, 9, 9, 10, 9, 8, 8, 9, 9, 9, 7, 8, 8, 9, 10, 8, 9, 9, 10, 8, 8, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 9, 8, 9, 9, 8, 9, 10, 10, 10, 9, 8, 9, 9, 10, 10, 9, 10, 10, 10, 8, 9, 10, 9, 8, 8, 9, 9, 10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 8, 8, 8, 9, 9, 9, 8, 9, 10, 9, 7, 7, 7, 10, 10, 10, 9, 9, 9, 8, 8, 7, 8, 9, 10, 8, 8, 9, 9, 10, 8, 8, 9, 10, 8, 9, 10, 10, 10, 7, 6, 7, 9, 10, 10, 7, 6, 6, 7, 8, 6, 7, 8, 9, 8, 8, 8, 8, 9, 8, 7, 7, 9, 8, 9, 8, 8, 9, 8, 8, 8, 9, 9, 10, 8, 9, 10, 10, 8, 9, 9, 10, 10, 10, 9, 10, 9, 10, 8, 9, 9, 10, 10, 10, 9, 9, 10, 9, 10, 10, 8, 7, 7, 9, 10, 9, 8, 9, 10, 10, 8, 8, 9, 10, 10, 8, 8, 9, 8, 9, 9, 10, 10, 10, 8, 9, 10, 9, 10, 10, 7, 7, 9, 10, 9, 8, 9, 9, 8, 8, 8, 9, 7, 10, 9, 9, 10, 10, 10, 9, 9, 7, 7, 10, 7, 10, 10, 10, 10, 10, 7, 8, 9, 8, 9, 9, 9, 10, 10, 8, 9, 9, 7, 8, 9, 10, 10, 10, 10, 10, 9, 8, 8, 9, 9, 10, 8, 8, 9, 10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 9, 10, 8, 9, 9, 10, 10, 10, 9, 8, 8, 9, 8, 7, 9, 10, 10, 10, 9, 9, 9, 8, 8, 9, 9, 9, 9, 9, 8, 9, 8, 9, 10, 10, 10, 9, 9, 10, 9, 9, 9, 9, 10, 9, 9, 10, 10, 10, 6, 7, 9, 10, 8, 9, 8, 8, 9, 8, 8, 9, 9, 9, 10, 7, 9, 9, 9, 8, 6, 7, 9, 10, 6, 7, 10, 9, 9, 8, 7, 7, 9, 8, 8, 9, 9, 10, 10, 8, 8, 9, 7, 8, 9, 9, 10, 10, 9, 9, 9, 8, 9, 10, 10, 10, 7, 9, 10, 10, 9, 10, 8, 8, 7, 8, 9, 10, 9, 9, 9, 10, 10, 8, 9, 9, 9, 9, 8, 9, 10, 10, 10, 10, 8, 9, 8, 9, 10, 10, 7, 8, 9, 10, 10, 9, 9, 9, 10, 8, 8, 9, 10, 10, 9, 9, 9, 10, 8, 9, 9, 9, 9, 10, 10, 9, 9, 10, 10, 8, 8, 9, 9, 10, 9, 9, 9, 9, 10, 10, 8, 9, 8, 9, 9, 8, 8, 9, 8, 9, 9, 9, 10, 10, 8, 9, 10, 9, 10, 10, 8, 8, 9, 10, 10, 9, 10, 10, 10, 10, 8, 8, 9, 8, 9, 9, 10, 11, 10, 10, 10, 10, 10, 10, 8, 9, 11, 11, 10, 10, 8, 9, 9, 10, 9, 9, 10, 9, 10, 8, 8, 8, 9, 10, 10, 9, 8, 9, 8, 9, 9, 9, 9, 10, 10, 10, 8, 8, 9, 10, 10, 9, 10, 10, 10, 9, 8, 8, 9, 10, 9, 10, 10, 10, 10, 8, 9, 9, 10, 8, 9, 9, 10, 10, 10, 10, 9, 10, 10, 10, 7, 9, 9, 10, 10, 10, 8, 9, 10, 8, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 8, 9, 8, 8, 8, 9, 10, 8, 8, 9, 10, 8, 9, 8, 9, 10, 8, 8, 9, 10, 8, 9, 9, 10, 9, 10, 10, 9, 10, 10, 8, 8, 8, 8, 9, 10, 10, 10, 8, 9, 9, 9, 8, 9, 10, 10, 9, 8, 8, 9, 9, 10, 9, 8, 9, 10, 8, 9, 9, 10, 9, 10, 9, 9, 8, 9, 9, 10, 10, 10, 10, 8, 8, 9, 8, 8, 8, 9, 10, 10, 9, 10, 9, 8, 8, 8, 9, 10, 10, 10, 10, 10, 7, 8, 8, 9, 10, 10, 10, 10, 10, 8, 9, 8, 8, 9, 10, 10, 10, 10, 9, 8, 8, 9, 10, 9, 7, 7, 9, 10, 10, 10, 8, 9, 10, 8, 8, 9, 9, 10, 8, 9, 10, 10, 10, 10, 10, 8, 8, 8, 9, 10, 9, 9, 10, 10, 10, 10, 8, 9, 10, 10, 8, 8, 9, 10, 10, 7, 10, 9, 10, 10, 10, 10, 10, 10, 8, 9, 8, 8, 8, 9, 8, 8, 9, 10, 8, 9, 9, 8, 9, 9, 8, 9, 9, 10, 9, 8, 8, 9, 10, 10, 8, 9, 10, 10, 10, 7, 7, 10, 9, 10, 10, 9, 10, 10, 8, 8, 9, 10, 10, 10, 10, 10, 8, 8, 9, 10, 10, 10, 10, 9, 8, 8, 9, 9, 10, 9, 10, 10, 10, 10, 9, 10, 10, 10, 8, 9, 10, 10, 10, 10, 7, 7, 8, 8, 9, 7, 9, 10, 10, 8, 8, 9, 10, 10, 8, 9, 10, 10, 9, 9, 10, 8, 9, 10, 10, 10, 10, 10, 10, 10, 8, 9, 9, 10, 10, 10, 10, 10, 6, 7, 7, 9, 10, 10, 10, 9, 9, 8, 8, 8, 9, 8, 9, 11, 10, 9, 8, 8, 8, 8, 9, 10, 11, 9, 9, 9, 9, 9, 10, 10, 8, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9, 9, 10, 9, 9, 9, 10, 9, 10, 10, 9, 9, 8, 9, 10, 7, 10, 10, 10, 10, 10, 9, 9, 9, 8, 9, 10, 10, 10, 8, 9, 9, 10, 10, 10, 10, 10, 9, 10, 7, 8, 8, 9, 10, 10, 8, 8, 8, 8, 8, 8, 9, 10, 10, 8, 9, 9, 8, 9, 9, 9, 10, 10, 10, 10, 10, 8, 9, 10, 9, 10, 10, 10, 8, 9, 9, 9, 10, 10, 10, 7, 9, 9, 10, 10, 10, 10, 10, 10, 8, 9, 9, 9, 8, 9, 9, 10, 10, 9, 8, 8, 9, 8, 9, 9, 9, 9, 9, 10, 8, 9, 8, 9, 9, 9, 9, 9, 9, 10, 10, 8, 7, 8, 9, 9, 9, 9, 9, 9, 7, 8, 8, 9, 9, 10, 9, 9, 8, 8, 8, 8, 9, 10, 8, 8, 9, 9, 8, 9, 8, 9, 9, 9, 10, 10, 9, 9, 9, 9, 9, 10, 10, 10, 10, 9, 9, 10, 10, 9, 9, 9, 9, 9, 9, 7, 9, 10, 8, 9, 9, 9, 9, 9, 8, 9, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 9, 9, 8, 9, 9, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 10, 9, 9, 9, 10, 9, 9, 10, 10, 10, 8, 9, 9, 10, 8, 8, 8, 9, 8, 9, 10, 10, 10, 10, 8, 8, 9, 9, 10, 7, 9, 9, 10, 10, 8, 9, 9, 10, 8, 9, 8, 9, 10, 10, 9, 9, 9, 9, 10, 8, 8, 9, 10, 10, 8, 9, 9, 10, 10, 10, 9, 8, 9, 10, 10, 9, 9, 9, 9, 9, 9, 9, 10, 9, 10, 9, 9, 10, 10, 10, 9, 10, 10, 10, 10, 9, 8, 8, 8, 9, 10, 10, 10, 10, 8, 9, 9, 8, 9, 11, 10, 9, 9, 8, 9, 8, 8, 9, 10, 9, 10, 10, 8, 9, 9, 9, 10, 11, 9, 10, 9, 9, 10, 10, 8, 9, 10, 10, 10, 9, 10, 10, 10, 10, 8, 9, 10, 10, 8, 9, 9, 10, 10, 10, 9, 10, 11, 10, 10, 8, 9, 11, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10, 8, 9, 10, 10, 8, 9, 9, 10, 10, 9, 10, 11, 9, 8, 9, 10, 10, 10, 9, 10, 7, 9, 8, 9, 9, 10, 11, 10, 9, 8, 9, 7, 8, 9, 10, 11, 11, 8, 9, 10, 8, 9, 8, 9, 10, 11, 10, 9, 9, 10, 10, 10, 9, 9, 10, 11, 9, 9, 9, 10, 8, 9, 9, 10, 9, 10, 9, 8, 8, 8, 9, 10, 7, 9, 9, 9, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 7, 8, 9, 9, 9, 10, 7, 8, 8, 8, 9, 9, 10, 10, 10, 8, 8, 8, 8, 9, 9, 10, 10, 10, 8, 9, 8, 8, 8, 8, 9, 9, 9, 8, 9, 8, 8, 9, 9, 10, 10, 10, 10, 10, 7, 9, 8, 8, 9, 10, 10, 10, 10, 8, 9, 8, 9, 9, 10, 10, 10, 10, 9, 10, 10, 10, 8, 8, 8, 9, 8, 8, 9, 9, 9, 10, 7, 8, 8, 9, 8, 9, 10, 9, 8, 8, 8, 8, 9, 8, 9, 9, 9, 10, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 10, 9, 9, 9, 8, 9, 9, 9, 10, 10, 7, 9, 9, 9, 10, 9, 9, 9, 9, 8, 9, 9, 10, 10, 10, 10, 9, 9, 9, 9, 8, 9, 10, 10, 10, 10, 8, 8, 9, 10, 9, 9, 9, 9, 8, 9, 9, 9, 9, 10, 10, 10, 9, 10, 10, 8, 8, 8, 9, 8, 9, 9, 9, 9, 8, 9, 8, 9, 10, 10, 8, 9, 9, 8, 8, 8, 9, 10, 10, 10, 9, 9, 9, 9, 10, 9, 9, 10, 10, 10, 9, 9, 8, 8, 9, 10, 10, 9, 11, 10, 8, 9, 9, 8, 9, 10, 10, 10, 10, 8, 9, 9, 8, 9, 9, 9, 9, 9, 9, 10, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10, 8, 9, 10, 10, 9, 9, 10, 10, 10, 9, 9, 9, 9, 10, 8, 7, 9, 10, 10, 10, 9, 10, 8, 9, 8, 9, 10, 10, 10, 10, 10, 10, 10, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 8, 9, 9, 8, 9, 10, 9, 11, 9, 9, 8, 9, 9, 10, 10, 9, 9, 9, 9, 10, 9, 9, 9, 11, 9, 9, 10, 9, 8, 8, 8, 9, 10, 10, 10, 11, 8, 8, 8, 8, 9, 10, 10, 10, 8, 9, 8, 9, 9, 10, 10, 10, 10, 10, 10, 8, 9, 10, 10, 9, 9, 9, 9, 9, 8, 8, 9, 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 10, 10, 8, 9, 10, 11, 9, 10, 9, 8, 9, 10, 9, 10, 9, 9, 10, 9, 8, 9, 9, 10, 10, 10, 9, 10, 9, 8, 7, 9, 9, 9, 6, 6, 6, 7, 10, 8, 9, 9, 9, 8, 8, 6, 7, 8, 8, 9, 9, 10, 9, 8, 8, 8, 9, 10, 10, 10, 9, 10, 10, 9, 8, 9, 10, 10, 10, 10, 8, 8, 8, 9, 8, 9, 10, 10, 9, 9, 8, 8, 9, 10, 10, 8, 9, 10, 9, 10, 8, 9, 10, 10, 10, 10, 9, 10, 10, 10, 6, 7, 9, 10, 6, 7, 9, 10, 9, 8, 8, 9, 9, 8, 8, 9, 10, 10, 8, 8, 8, 9, 9, 8, 9, 9, 9, 9, 9, 8, 8, 9, 10, 10, 9, 10, 9, 9, 10, 10, 8, 9, 10, 10, 10, 10, 10, 10, 9, 10, 8, 8, 8, 9, 8, 9, 10, 10, 10, 8, 8, 8, 9, 8, 9, 10, 10, 10, 10, 8, 8, 9, 9, 8, 9, 8, 9, 10, 10, 10, 8, 9, 8, 8, 8, 9, 10, 10, 10, 10, 8, 8, 8, 8, 8, 9, 9, 10, 10, 8, 8, 8, 8, 9, 10, 10, 9, 9, 10, 8, 9, 9, 8, 8, 8, 9, 9, 8, 8, 9, 9, 10, 10, 8, 9, 9, 9, 8, 8, 9, 10, 10, 8, 9, 10, 8, 8, 9, 9, 8, 9, 10, 10, 11, 10, 9, 9, 9, 10, 10, 9, 10, 9, 9, 10, 10, 9, 11, 8, 9, 8, 9, 10, 10, 10, 9, 10, 10, 10, 8, 8, 9, 8, 8, 9, 10, 10, 10, 10, 10, 8, 8, 8, 9, 10, 10, 11, 11, 10, 10, 8, 9, 9, 10, 9, 9, 9, 9, 10, 9, 9, 9, 10, 9, 9, 8, 8, 9, 8, 9, 9, 10, 10, 10, 10, 10, 9, 8, 9, 10, 8, 9, 10, 10, 10, 10, 9, 8, 9, 10, 8, 9, 10, 10, 10, 10, 10, 10, 8, 9, 10, 10, 10, 9, 8, 9, 10, 10, 10, 8, 9, 9, 10, 8, 9, 10, 10, 10, 10, 10, 8, 9, 10, 10, 9, 9, 10, 11, 9, 9, 9, 8, 9, 9, 10, 11, 10, 10, 10, 9, 8, 9, 9, 11, 10, 10, 10, 10, 10, 10, 10, 10, 9, 8, 9, 9, 9, 9, 10, 7, 9, 10, 10, 10, 9, 10, 10, 10, 8, 9, 9, 10, 10, 10, 11, 10, 9, 9, 9, 10, 9, 9, 8, 9, 9, 9, 9, 9, 10, 10, 9, 9, 10, 10, 8, 9, 9, 10, 10, 10, 7, 8, 8, 8, 9, 9, 10, 9, 9, 8, 9, 9, 10, 10, 10, 9, 10, 10, 10, 10, 8, 8, 9, 10, 9, 8, 9, 11, 10, 10, 8, 9, 9, 10, 10, 10, 9, 10, 10, 8, 9, 5, 10, 10, 9, 6, 7, 9, 8, 9, 9, 10, 10, 10, 8, 8, 9, 10, 10, 10, 10, 11, 9, 10, 8, 9, 10, 10, 10, 10, 8, 9, 10, 10, 10, 10, 10, 8, 7, 10, 8};
int main()
{
    int T; scanf("%d", &T);
    while(T--)
    {
        int N;
        scanf("%d", &N);
        printf("%d\n", a[N - 1]);
    }
    return 0;
}

 

你可能感兴趣的:(DP动态规划,DP)