HDU6831 Fragrant numbers(区间dp)2020杭电多校第六场

HDU6831 Fragrant numbers(区间dp)2020杭电多校第六场
HDU6831 Fragrant numbers(区间dp)2020杭电多校第六场_第1张图片

Sample Input

3
520
1
2

Sample Output

6
1
2

题意:
“1145141919” 的无穷串,给出一个n,要求选最少的num,使得前num个数中间添加任意括号、加号、乘号,计算结果等于n。
题解:
区间dp+预处理
dp[i][j][val]:[i,j]区间内是否能计算出valval。

于是可得转移方程:
dp[i][j][v1+v2]=dp[i][mid][v1]+dp[mid+1][j][v2]
dp[i][j][v1∗v2]=dp[i][mid][v1]*dp[mid+1][j][v2]
最多只需要前12位就能构造出所有数,除了3、7。
打表法:

#include
#include
#include
#include
#include
#include 
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
const int INF=0x3f3f3f3f;
const double pi=acos(-1.0),eps=1e-8;
setdp[20][20];
string s="11451419191145141919114514191";
int ans[5010];
void dfs(int l,int r)
{
    if(r-l+1<=4)
    {
        string xx=s.substr(l-1,r-l+1);
        int t=0;
        for(int i=0; i::iterator it1,it2;
        for(it1=dp[l][i].begin(); it1!=dp[l][i].end(); it1++)
        {
            for(it2=dp[i+1][r].begin(); it2!=dp[i+1][r].end(); it2++)
            {
                if(*it1 + *it2<=5000)dp[l][r].insert(*it1 + *it2);

                if(*it1 * *it2<=5000)dp[l][r].insert(*it1 * *it2);
            }
        }
    }

}
int main()
{
    ofstream cot("text.txt");
    dfs(1,11);

    memset(ans,-1,sizeof(ans));
    for(int i=1; i<=11; i++)
    {
        set::iterator it;
        for(it=dp[1][i].begin(); it!=dp[1][i].end(); it++)
        {
            if(ans[*it]==-1)
                ans[*it]=i;
        }
    }
    for(int i=1;i<=5000;i++)
        cot<
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
const int INF=0x3f3f3f3f;
const double pi=acos(-1.0),eps=1e-8;
const int maxn=1e5+10;
const ll mod=1e9+7;

int ans[5010]{0,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 a;
        scanf("%d",&a);
        printf("%d\n",ans[a]);
    }
    return 0;
}

Code2:

#include
#include
#include
#include
#include
#include 
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
const int INF=0x3f3f3f3f;
const double pi=acos(-1.0),eps=1e-8;
setdp[20][20];
string s="11451419191145141919114514191";
int ans[5010];
void dfs(int l,int r)
{
    if(r-l+1<=4)
    {
        string xx=s.substr(l-1,r-l+1);
        int t=0;
        for(int i=0; i::iterator it1,it2;
        for(it1=dp[l][i].begin(); it1!=dp[l][i].end(); it1++)
        {
            for(it2=dp[i+1][r].begin(); it2!=dp[i+1][r].end(); it2++)
            {
                if(*it1 + *it2<=5000)dp[l][r].insert(*it1 + *it2);

                if(*it1 * *it2<=5000)dp[l][r].insert(*it1 * *it2);
            }
        }
    }

}
int main()
{
    dfs(1,11);

    memset(ans,-1,sizeof(ans));
    for(int i=1; i<=11; i++)
    {
        set::iterator it;
        for(it=dp[1][i].begin(); it!=dp[1][i].end(); it++)
        {
            if(ans[*it]==-1)
                ans[*it]=i;
        }
    }
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int a;
        scanf("%d",&a);
        printf("%d\n",ans[a]);
    }
    return 0;
}

你可能感兴趣的:(2020杭电多校训练)