zoukankan      html  css  js  c++  java
  • [CSP-S模拟测试]:小L的数(数位DP+模拟)

    题目传送门(内部题132)


    输入格式

      第一行一个整数$t$。
      接下来$t$行每行一个整数$n$。


    输出格式

      $t$行,每行一个整数表示答案。


    样例

    样例输入:

    4
    1818
    23123
    269105
    21093203

    样例输出:

    1
    2
    3
    3


    数据范围与提示

      对于前$5\%$的测试数据,满足答案小于等于$1$。
      对于前$20\%$的测试数据,满足答案小于等于$2$。
      对于前$40\%$的测试数据,满足$nleqslant 300,000$。
      对于前$60\%$的测试数据,满足答案小于等于$3$,$nleqslant 10^{13}$。
      对于前$90\%$的测试数据,满足$tleqslant 30$。
      对于$100\%$的测试数据,满足$1leqslant nleqslant 10^{18},1leqslant tleqslant 100$。


    题解

    答案一定不大于$4$,所以可以枚举二元组。

    先特判答案为$1$的情况,然后用两个二元组尝试,如果不行在用三个,否则直接输出$4$即可。

    考虑如何判断,数位$DP$。

    设$dp[i][0/1/2][0/1][0/1][0/1]$表示到了第$i$位,进位为$0/1/2$,三个二元组有没有前导$0$。

    转移过程我认为是一个模拟(看我代码就知道了……)。

    好多人都说被卡常了,然而我一直$WA$,不过到底是调出来了。

    时间复杂度:$Theta(2043360 imes T)$。

    期望得分:$100$分。

    实际得分:$100$分。


    代码时刻

    #include<bits/stdc++.h>
    using namespace std;
    char ch[20];
    int s,w[20],tot;
    char vis[10];
    pair<int,int> F[100];
    bool dp[20][3][2][2][2];
    void pre_work(){for(int i=0;i<9;i++)for(int j=i+1;j<=9;j++)F[++tot]=make_pair(i,j);}
    int ask()
    {
    	int sum=0;
    	memset(vis,0,sizeof(vis));
    	for(int i=1;i<=s;i++)
    		if(!vis[w[i]]){vis[w[i]]=1;sum++;}
    	if(sum<=2)return 1;
    	for(int i=1;i<=tot;i++)
    	{
    		for(int j=i;j<=tot;j++)
    		{
    			memset(dp,0,sizeof(dp));
    			int a=F[i].first,b=F[i].second;
    			int c=F[j].first,d=F[j].second;
    			dp[1][0][0][0][0]=1;
    			dp[1][0][0][0][1]=1;
    			dp[1][0][0][1][0]=1;
    			dp[1][0][0][1][1]=1;
    			for(int x=1;x<=s;x++)
    			{
    				if(dp[x][0][0][0][0])
    				{
    					if((a+c)%10==w[x])dp[x+1][(a+c)/10][0][0][0]=dp[x+1][(a+c)/10][0][0][1]=dp[x+1][(a+c)/10][0][1][0]=dp[x+1][(a+c)/10][0][1][1]=1;
    					if((a+d)%10==w[x])dp[x+1][(a+d)/10][0][0][0]=dp[x+1][(a+d)/10][0][0][1]=dp[x+1][(a+d)/10][0][1][0]=dp[x+1][(a+d)/10][0][1][1]=1;
    					if((b+c)%10==w[x])dp[x+1][(b+c)/10][0][0][0]=dp[x+1][(b+c)/10][0][0][1]=dp[x+1][(b+c)/10][0][1][0]=dp[x+1][(b+c)/10][0][1][1]=1;
    					if((b+d)%10==w[x])dp[x+1][(b+d)/10][0][0][0]=dp[x+1][(b+d)/10][0][0][1]=dp[x+1][(b+d)/10][0][1][0]=dp[x+1][(b+d)/10][0][1][1]=1;
    				}
    				if(dp[x][1][0][0][0])
    				{
    					if((a+c+1)%10==w[x])dp[x+1][(a+c+1)/10][0][0][0]=dp[x+1][(a+c+1)/10][0][0][1]=dp[x+1][(a+c+1)/10][0][1][0]=dp[x+1][(a+c+1)/10][0][1][1]=1;
    					if((a+d+1)%10==w[x])dp[x+1][(a+d+1)/10][0][0][0]=dp[x+1][(a+d+1)/10][0][0][1]=dp[x+1][(a+d+1)/10][0][1][0]=dp[x+1][(a+d+1)/10][0][1][1]=1;
    					if((b+c+1)%10==w[x])dp[x+1][(b+c+1)/10][0][0][0]=dp[x+1][(b+c+1)/10][0][0][1]=dp[x+1][(b+c+1)/10][0][1][0]=dp[x+1][(b+c+1)/10][0][1][1]=1;
    					if((b+d+1)%10==w[x])dp[x+1][(b+d+1)/10][0][0][0]=dp[x+1][(b+d+1)/10][0][0][1]=dp[x+1][(b+d+1)/10][0][1][0]=dp[x+1][(b+d+1)/10][0][1][1]=1;
    				}
    				if(dp[x][0][0][0][1])
    				{
    					if(w[x]==c)dp[x+1][0][0][0][1]=dp[x+1][0][0][1][1]=1;
    					if(w[x]==d)dp[x+1][0][0][0][1]=dp[x+1][0][0][1][1]=1;
    				}
    				if(dp[x][1][0][0][1])
    				{
    					if(w[x]==(c+1)%10)dp[x+1][(c+1)/10][0][0][1]=dp[x+1][(c+1)/10][0][1][1]=1;
    					if(w[x]==(d+1)%10)dp[x+1][(d+1)/10][0][0][1]=dp[x+1][(d+1)/10][0][1][1]=1;
    				}
    				if(dp[x][0][0][1][0])
    				{
    					if(w[x]==a)dp[x+1][0][0][1][0]=dp[x+1][0][0][1][1]=1;
    					if(w[x]==b)dp[x+1][0][0][1][0]=dp[x+1][0][0][1][1]=1;
    				}
    				if(dp[x][1][0][1][0])
    				{
    					if(w[x]==(a+1)%10)dp[x+1][(a+1)/10][0][1][0]=dp[x+1][(a+1)/10][0][1][1]=1;
    					if(w[x]==(b+1)%10)dp[x+1][(b+1)/10][0][1][0]=dp[x+1][(b+1)/10][0][1][1]=1;
    				}
    				if(dp[x][0][0][1][1]&&!w[x])dp[x+1][0][0][1][1]=1;
    				if(dp[x][1][0][1][1]&&w[x]==1)dp[x+1][0][0][1][1]=1;
    			}
    			if(dp[s+1][0][0][0][0])return 2;
    			if(dp[s+1][0][0][0][1])return 2;
    			if(dp[s+1][0][0][1][0])return 2;
    			if(dp[s+1][0][0][1][1])return 2;
    		}
    	}
    	for(int i=1;i<=tot;i++)
    	{
    		for(int j=i;j<=tot;j++)
    		{
    			for(int k=j;k<=tot;k++)
    			{
    				memset(dp,0,sizeof(dp));
    				int a=F[i].first,b=F[i].second;
    				int c=F[j].first,d=F[j].second;
    				int e=F[k].first,f=F[k].second;
    				dp[1][0][0][0][0]=1;
    				dp[1][0][0][0][1]=1;
    				dp[1][0][0][1][0]=1;
    				dp[1][0][0][1][1]=1;
    				dp[1][0][1][0][0]=1;
    				dp[1][0][1][0][1]=1;
    				dp[1][0][1][1][0]=1;
    				dp[1][0][1][1][1]=1;
    				for(int x=1;x<=s;x++)
    				{
    					if(dp[x][0][0][0][0])
    					{
    						if((a+c+e)%10==w[x])
    						{
    							dp[x+1][(a+c+e)/10][0][0][0]=1;
    							dp[x+1][(a+c+e)/10][0][0][1]=1;
    							dp[x+1][(a+c+e)/10][0][1][0]=1;
    							dp[x+1][(a+c+e)/10][0][1][1]=1;
    							dp[x+1][(a+c+e)/10][1][0][0]=1;
    							dp[x+1][(a+c+e)/10][1][0][1]=1;
    							dp[x+1][(a+c+e)/10][1][1][0]=1;
    							dp[x+1][(a+c+e)/10][1][1][1]=1;
    						}
    						if((a+c+f)%10==w[x])
    						{
    							dp[x+1][(a+c+f)/10][0][0][0]=1;
    							dp[x+1][(a+c+f)/10][0][0][1]=1;
    							dp[x+1][(a+c+f)/10][0][1][0]=1;
    							dp[x+1][(a+c+f)/10][0][1][1]=1;
    							dp[x+1][(a+c+f)/10][1][0][0]=1;
    							dp[x+1][(a+c+f)/10][1][0][1]=1;
    							dp[x+1][(a+c+f)/10][1][1][0]=1;
    							dp[x+1][(a+c+f)/10][1][1][1]=1;
    						}
    						if((a+d+e)%10==w[x])
    						{
    							dp[x+1][(a+d+e)/10][0][0][0]=1;
    							dp[x+1][(a+d+e)/10][0][0][1]=1;
    							dp[x+1][(a+d+e)/10][0][1][0]=1;
    							dp[x+1][(a+d+e)/10][0][1][1]=1;
    							dp[x+1][(a+d+e)/10][1][0][0]=1;
    							dp[x+1][(a+d+e)/10][1][0][1]=1;
    							dp[x+1][(a+d+e)/10][1][1][0]=1;
    							dp[x+1][(a+d+e)/10][1][1][1]=1;
    						}
    						if((a+d+f)%10==w[x])
    						{
    							dp[x+1][(a+d+f)/10][0][0][0]=1;
    							dp[x+1][(a+d+f)/10][0][0][1]=1;
    							dp[x+1][(a+d+f)/10][0][1][0]=1;
    							dp[x+1][(a+d+f)/10][0][1][1]=1;
    							dp[x+1][(a+d+f)/10][1][0][0]=1;
    							dp[x+1][(a+d+f)/10][1][0][1]=1;
    							dp[x+1][(a+d+f)/10][1][1][0]=1;
    							dp[x+1][(a+d+f)/10][1][1][1]=1;
    						}
    						if((b+c+e)%10==w[x])
    						{
    							dp[x+1][(b+c+e)/10][0][0][0]=1;
    							dp[x+1][(b+c+e)/10][0][0][1]=1;
    							dp[x+1][(b+c+e)/10][0][1][0]=1;
    							dp[x+1][(b+c+e)/10][0][1][1]=1;
    							dp[x+1][(b+c+e)/10][1][0][0]=1;
    							dp[x+1][(b+c+e)/10][1][0][1]=1;
    							dp[x+1][(b+c+e)/10][1][1][0]=1;
    							dp[x+1][(b+c+e)/10][1][1][1]=1;
    						}
    						if((b+c+f)%10==w[x])
    						{
    							dp[x+1][(b+c+f)/10][0][0][0]=1;
    							dp[x+1][(b+c+f)/10][0][0][1]=1;
    							dp[x+1][(b+c+f)/10][0][1][0]=1;
    							dp[x+1][(b+c+f)/10][0][1][1]=1;
    							dp[x+1][(b+c+f)/10][1][0][0]=1;
    							dp[x+1][(b+c+f)/10][1][0][1]=1;
    							dp[x+1][(b+c+f)/10][1][1][0]=1;
    							dp[x+1][(b+c+f)/10][1][1][1]=1;
    						}
    						if((b+d+e)%10==w[x])
    						{
    							dp[x+1][(b+d+e)/10][0][0][0]=1;
    							dp[x+1][(b+d+e)/10][0][0][1]=1;
    							dp[x+1][(b+d+e)/10][0][1][0]=1;
    							dp[x+1][(b+d+e)/10][0][1][1]=1;
    							dp[x+1][(b+d+e)/10][1][0][0]=1;
    							dp[x+1][(b+d+e)/10][1][0][1]=1;
    							dp[x+1][(b+d+e)/10][1][1][0]=1;
    							dp[x+1][(b+d+e)/10][1][1][1]=1;
    						}
    						if((b+d+f)%10==w[x])
    						{
    							dp[x+1][(b+d+f)/10][0][0][0]=1;
    							dp[x+1][(b+d+f)/10][0][0][1]=1;
    							dp[x+1][(b+d+f)/10][0][1][0]=1;
    							dp[x+1][(b+d+f)/10][0][1][1]=1;
    							dp[x+1][(b+d+f)/10][1][0][0]=1;
    							dp[x+1][(b+d+f)/10][1][0][1]=1;
    							dp[x+1][(b+d+f)/10][1][1][0]=1;
    							dp[x+1][(b+d+f)/10][1][1][1]=1;
    						}
    					}
    					if(dp[x][1][0][0][0])
    					{
    						if((a+c+e+1)%10==w[x])
    						{
    							dp[x+1][(a+c+e+1)/10][0][0][0]=1;
    							dp[x+1][(a+c+e+1)/10][0][0][1]=1;
    							dp[x+1][(a+c+e+1)/10][0][1][0]=1;
    							dp[x+1][(a+c+e+1)/10][0][1][1]=1;
    							dp[x+1][(a+c+e+1)/10][1][0][0]=1;
    							dp[x+1][(a+c+e+1)/10][1][0][1]=1;
    							dp[x+1][(a+c+e+1)/10][1][1][0]=1;
    							dp[x+1][(a+c+e+1)/10][1][1][1]=1;
    						}
    						if((a+c+f+1)%10==w[x])
    						{
    							dp[x+1][(a+c+f+1)/10][0][0][0]=1;
    							dp[x+1][(a+c+f+1)/10][0][0][1]=1;
    							dp[x+1][(a+c+f+1)/10][0][1][0]=1;
    							dp[x+1][(a+c+f+1)/10][0][1][1]=1;
    							dp[x+1][(a+c+f+1)/10][1][0][0]=1;
    							dp[x+1][(a+c+f+1)/10][1][0][1]=1;
    							dp[x+1][(a+c+f+1)/10][1][1][0]=1;
    							dp[x+1][(a+c+f+1)/10][1][1][1]=1;
    						}
    						if((a+d+e+1)%10==w[x])
    						{
    							dp[x+1][(a+d+e+1)/10][0][0][0]=1;
    							dp[x+1][(a+d+e+1)/10][0][0][1]=1;
    							dp[x+1][(a+d+e+1)/10][0][1][0]=1;
    							dp[x+1][(a+d+e+1)/10][0][1][1]=1;
    							dp[x+1][(a+d+e+1)/10][1][0][0]=1;
    							dp[x+1][(a+d+e+1)/10][1][0][1]=1;
    							dp[x+1][(a+d+e+1)/10][1][1][0]=1;
    							dp[x+1][(a+d+e+1)/10][1][1][1]=1;
    						}
    						if((a+d+f+1)%10==w[x])
    						{
    							dp[x+1][(a+d+f+1)/10][0][0][0]=1;
    							dp[x+1][(a+d+f+1)/10][0][0][1]=1;
    							dp[x+1][(a+d+f+1)/10][0][1][0]=1;
    							dp[x+1][(a+d+f+1)/10][0][1][1]=1;
    							dp[x+1][(a+d+f+1)/10][1][0][0]=1;
    							dp[x+1][(a+d+f+1)/10][1][0][1]=1;
    							dp[x+1][(a+d+f+1)/10][1][1][0]=1;
    							dp[x+1][(a+d+f+1)/10][1][1][1]=1;
    						}
    						if((b+c+e+1)%10==w[x])
    						{
    							dp[x+1][(b+c+e+1)/10][0][0][0]=1;
    							dp[x+1][(b+c+e+1)/10][0][0][1]=1;
    							dp[x+1][(b+c+e+1)/10][0][1][0]=1;
    							dp[x+1][(b+c+e+1)/10][0][1][1]=1;
    							dp[x+1][(b+c+e+1)/10][1][0][0]=1;
    							dp[x+1][(b+c+e+1)/10][1][0][1]=1;
    							dp[x+1][(b+c+e+1)/10][1][1][0]=1;
    							dp[x+1][(b+c+e+1)/10][1][1][1]=1;
    						}
    						if((b+c+f+1)%10==w[x])
    						{
    							dp[x+1][(b+c+f+1)/10][0][0][0]=1;
    							dp[x+1][(b+c+f+1)/10][0][0][1]=1;
    							dp[x+1][(b+c+f+1)/10][0][1][0]=1;
    							dp[x+1][(b+c+f+1)/10][0][1][1]=1;
    							dp[x+1][(b+c+f+1)/10][1][0][0]=1;
    							dp[x+1][(b+c+f+1)/10][1][0][1]=1;
    							dp[x+1][(b+c+f+1)/10][1][1][0]=1;
    							dp[x+1][(b+c+f+1)/10][1][1][1]=1;
    						}
    						if((b+d+e+1)%10==w[x])
    						{
    							dp[x+1][(b+d+e+1)/10][0][0][0]=1;
    							dp[x+1][(b+d+e+1)/10][0][0][1]=1;
    							dp[x+1][(b+d+e+1)/10][0][1][0]=1;
    							dp[x+1][(b+d+e+1)/10][0][1][1]=1;
    							dp[x+1][(b+d+e+1)/10][1][0][0]=1;
    							dp[x+1][(b+d+e+1)/10][1][0][1]=1;
    							dp[x+1][(b+d+e+1)/10][1][1][0]=1;
    							dp[x+1][(b+d+e+1)/10][1][1][1]=1;
    						}
    						if((b+d+f+1)%10==w[x])
    						{
    							dp[x+1][(b+d+f+1)/10][0][0][0]=1;
    							dp[x+1][(b+d+f+1)/10][0][0][1]=1;
    							dp[x+1][(b+d+f+1)/10][0][1][0]=1;
    							dp[x+1][(b+d+f+1)/10][0][1][1]=1;
    							dp[x+1][(b+d+f+1)/10][1][0][0]=1;
    							dp[x+1][(b+d+f+1)/10][1][0][1]=1;
    							dp[x+1][(b+d+f+1)/10][1][1][0]=1;
    							dp[x+1][(b+d+f+1)/10][1][1][1]=1;
    						}
    					}
    					if(dp[x][2][0][0][0])
    					{
    						if((a+c+e+2)%10==w[x])
    						{
    							dp[x+1][(a+c+e+2)/10][0][0][0]=1;
    							dp[x+1][(a+c+e+2)/10][0][0][1]=1;
    							dp[x+1][(a+c+e+2)/10][0][1][0]=1;
    							dp[x+1][(a+c+e+2)/10][0][1][1]=1;
    							dp[x+1][(a+c+e+2)/10][1][0][0]=1;
    							dp[x+1][(a+c+e+2)/10][1][0][1]=1;
    							dp[x+1][(a+c+e+2)/10][1][1][0]=1;
    							dp[x+1][(a+c+e+2)/10][1][1][1]=1;
    						}
    						if((a+c+f+2)%10==w[x])
    						{
    							dp[x+1][(a+c+f+2)/10][0][0][0]=1;
    							dp[x+1][(a+c+f+2)/10][0][0][1]=1;
    							dp[x+1][(a+c+f+2)/10][0][1][0]=1;
    							dp[x+1][(a+c+f+2)/10][0][1][1]=1;
    							dp[x+1][(a+c+f+2)/10][1][0][0]=1;
    							dp[x+1][(a+c+f+2)/10][1][0][1]=1;
    							dp[x+1][(a+c+f+2)/10][1][1][0]=1;
    							dp[x+1][(a+c+f+2)/10][1][1][1]=1;
    						}
    						if((a+d+e+2)%10==w[x])
    						{
    							dp[x+1][(a+d+e+2)/10][0][0][0]=1;
    							dp[x+1][(a+d+e+2)/10][0][0][1]=1;
    							dp[x+1][(a+d+e+2)/10][0][1][0]=1;
    							dp[x+1][(a+d+e+2)/10][0][1][1]=1;
    							dp[x+1][(a+d+e+2)/10][1][0][0]=1;
    							dp[x+1][(a+d+e+2)/10][1][0][1]=1;
    							dp[x+1][(a+d+e+2)/10][1][1][0]=1;
    							dp[x+1][(a+d+e+2)/10][1][1][1]=1;
    						}
    						if((a+d+f+2)%10==w[x])
    						{
    							dp[x+1][(a+d+f+2)/10][0][0][0]=1;
    							dp[x+1][(a+d+f+2)/10][0][0][1]=1;
    							dp[x+1][(a+d+f+2)/10][0][1][0]=1;
    							dp[x+1][(a+d+f+2)/10][0][1][1]=1;
    							dp[x+1][(a+d+f+2)/10][1][0][0]=1;
    							dp[x+1][(a+d+f+2)/10][1][0][1]=1;
    							dp[x+1][(a+d+f+2)/10][1][1][0]=1;
    							dp[x+1][(a+d+f+2)/10][1][1][1]=1;
    						}
    						if((b+c+e+2)%10==w[x])
    						{
    							dp[x+1][(b+c+e+2)/10][0][0][0]=1;
    							dp[x+1][(b+c+e+2)/10][0][0][1]=1;
    							dp[x+1][(b+c+e+2)/10][0][1][0]=1;
    							dp[x+1][(b+c+e+2)/10][0][1][1]=1;
    							dp[x+1][(b+c+e+2)/10][1][0][0]=1;
    							dp[x+1][(b+c+e+2)/10][1][0][1]=1;
    							dp[x+1][(b+c+e+2)/10][1][1][0]=1;
    							dp[x+1][(b+c+e+2)/10][1][1][1]=1;
    						}
    						if((b+c+f+2)%10==w[x])
    						{
    							dp[x+1][(b+c+f+2)/10][0][0][0]=1;
    							dp[x+1][(b+c+f+2)/10][0][0][1]=1;
    							dp[x+1][(b+c+f+2)/10][0][1][0]=1;
    							dp[x+1][(b+c+f+2)/10][0][1][1]=1;
    							dp[x+1][(b+c+f+2)/10][1][0][0]=1;
    							dp[x+1][(b+c+f+2)/10][1][0][1]=1;
    							dp[x+1][(b+c+f+2)/10][1][1][0]=1;
    							dp[x+1][(b+c+f+2)/10][1][1][1]=1;
    						}
    						if((b+d+e+2)%10==w[x])
    						{
    							dp[x+1][(b+d+e+2)/10][0][0][0]=1;
    							dp[x+1][(b+d+e+2)/10][0][0][1]=1;
    							dp[x+1][(b+d+e+2)/10][0][1][0]=1;
    							dp[x+1][(b+d+e+2)/10][0][1][1]=1;
    							dp[x+1][(b+d+e+2)/10][1][0][0]=1;
    							dp[x+1][(b+d+e+2)/10][1][0][1]=1;
    							dp[x+1][(b+d+e+2)/10][1][1][0]=1;
    							dp[x+1][(b+d+e+2)/10][1][1][1]=1;
    						}
    						if((b+d+f+2)%10==w[x])
    						{
    							dp[x+1][(b+d+f+2)/10][0][0][0]=1;
    							dp[x+1][(b+d+f+2)/10][0][0][1]=1;
    							dp[x+1][(b+d+f+2)/10][0][1][0]=1;
    							dp[x+1][(b+d+f+2)/10][0][1][1]=1;
    							dp[x+1][(b+d+f+2)/10][1][0][0]=1;
    							dp[x+1][(b+d+f+2)/10][1][0][1]=1;
    							dp[x+1][(b+d+f+2)/10][1][1][0]=1;
    							dp[x+1][(b+d+f+2)/10][1][1][1]=1;
    						}
    					}
    					if(dp[x][0][0][0][1])
    					{
    						if((c+e)%10==w[x])dp[x+1][(c+e)/10][0][0][1]=dp[x+1][(c+e)/10][0][1][1]=dp[x+1][(c+e)/10][1][0][1]=dp[x+1][(c+e)/10][1][1][1]=1;
    						if((c+f)%10==w[x])dp[x+1][(c+f)/10][0][0][1]=dp[x+1][(c+f)/10][0][1][1]=dp[x+1][(c+f)/10][1][0][1]=dp[x+1][(c+f)/10][1][1][1]=1;
    						if((d+e)%10==w[x])dp[x+1][(d+e)/10][0][0][1]=dp[x+1][(d+e)/10][0][1][1]=dp[x+1][(d+e)/10][1][0][1]=dp[x+1][(d+e)/10][1][1][1]=1;
    						if((d+f)%10==w[x])dp[x+1][(d+f)/10][0][0][1]=dp[x+1][(d+f)/10][0][1][1]=dp[x+1][(d+f)/10][1][0][1]=dp[x+1][(d+f)/10][1][1][1]=1;
    					}
    					if(dp[x][1][0][0][1])
    					{
    						if((c+e+1)%10==w[x])dp[x+1][(c+e+1)/10][0][0][1]=dp[x+1][(c+e+1)/10][0][1][1]=dp[x+1][(c+e+1)/10][1][0][1]=dp[x+1][(c+e+1)/10][1][1][1]=1;
    						if((c+f+1)%10==w[x])dp[x+1][(c+f+1)/10][0][0][1]=dp[x+1][(c+f+1)/10][0][1][1]=dp[x+1][(c+f+1)/10][1][0][1]=dp[x+1][(c+f+1)/10][1][1][1]=1;
    						if((d+e+1)%10==w[x])dp[x+1][(d+e+1)/10][0][0][1]=dp[x+1][(d+e+1)/10][0][1][1]=dp[x+1][(d+e+1)/10][1][0][1]=dp[x+1][(d+e+1)/10][1][1][1]=1;
    						if((d+f+1)%10==w[x])dp[x+1][(d+f+1)/10][0][0][1]=dp[x+1][(d+f+1)/10][0][1][1]=dp[x+1][(d+f+1)/10][1][0][1]=dp[x+1][(d+f+1)/10][1][1][1]=1;
    					}
    					if(dp[x][2][0][0][1])
    					{
    						if((c+e+2)%10==w[x])dp[x+1][(c+e+2)/10][0][0][1]=dp[x+1][(c+e+2)/10][0][1][1]=dp[x+1][(c+e+2)/10][1][0][1]=dp[x+1][(c+e+2)/10][1][1][1]=1;
    						if((c+f+2)%10==w[x])dp[x+1][(c+f+2)/10][0][0][1]=dp[x+1][(c+f+2)/10][0][1][1]=dp[x+1][(c+f+2)/10][1][0][1]=dp[x+1][(c+f+2)/10][1][1][1]=1;
    						if((d+e+2)%10==w[x])dp[x+1][(d+e+2)/10][0][0][1]=dp[x+1][(d+e+2)/10][0][1][1]=dp[x+1][(d+e+2)/10][1][0][1]=dp[x+1][(d+e+2)/10][1][1][1]=1;
    						if((d+f+2)%10==w[x])dp[x+1][(d+f+2)/10][0][0][1]=dp[x+1][(d+f+2)/10][0][1][1]=dp[x+1][(d+f+2)/10][1][0][1]=dp[x+1][(d+f+2)/10][1][1][1]=1;
    					}
    					if(dp[x][0][0][1][0])
    					{
    						if((a+e)%10==w[x])dp[x+1][(a+e)/10][0][1][0]=dp[x+1][(a+e)/10][0][1][1]=dp[x+1][(a+e)/10][1][1][0]=dp[x+1][(a+e)/10][1][1][1]=1;
    						if((a+f)%10==w[x])dp[x+1][(a+f)/10][0][1][0]=dp[x+1][(a+f)/10][0][1][1]=dp[x+1][(a+f)/10][1][1][0]=dp[x+1][(a+f)/10][1][1][1]=1;
    						if((b+e)%10==w[x])dp[x+1][(b+e)/10][0][1][0]=dp[x+1][(b+e)/10][0][1][1]=dp[x+1][(b+e)/10][1][1][0]=dp[x+1][(b+e)/10][1][1][1]=1;
    						if((b+f)%10==w[x])dp[x+1][(b+f)/10][0][1][0]=dp[x+1][(b+f)/10][0][1][1]=dp[x+1][(b+f)/10][1][1][0]=dp[x+1][(b+f)/10][1][1][1]=1;
    					}
    					if(dp[x][1][0][1][0])
    					{
    						if((a+e+1)%10==w[x])dp[x+1][(a+e+1)/10][0][1][0]=dp[x+1][(a+e+1)/10][0][1][1]=dp[x+1][(a+e+1)/10][1][1][0]=dp[x+1][(a+e+1)/10][1][1][1]=1;
    						if((a+f+1)%10==w[x])dp[x+1][(a+f+1)/10][0][1][0]=dp[x+1][(a+f+1)/10][0][1][1]=dp[x+1][(a+f+1)/10][1][1][0]=dp[x+1][(a+f+1)/10][1][1][1]=1;
    						if((b+e+1)%10==w[x])dp[x+1][(b+e+1)/10][0][1][0]=dp[x+1][(b+e+1)/10][0][1][1]=dp[x+1][(b+e+1)/10][1][1][0]=dp[x+1][(b+e+1)/10][1][1][1]=1;
    						if((b+f+1)%10==w[x])dp[x+1][(b+f+1)/10][0][1][0]=dp[x+1][(b+f+1)/10][0][1][1]=dp[x+1][(b+f+1)/10][1][1][0]=dp[x+1][(b+f+1)/10][1][1][1]=1;
    					}
    					if(dp[x][2][0][1][0])
    					{
    						if((a+e+2)%10==w[x])dp[x+1][(a+e+2)/10][0][1][0]=dp[x+1][(a+e+2)/10][0][1][1]=dp[x+1][(a+e+2)/10][1][1][0]=dp[x+1][(a+e+2)/10][1][1][1]=1;
    						if((a+f+2)%10==w[x])dp[x+1][(a+f+2)/10][0][1][0]=dp[x+1][(a+f+2)/10][0][1][1]=dp[x+1][(a+f+2)/10][1][1][0]=dp[x+1][(a+f+2)/10][1][1][1]=1;
    						if((b+e+2)%10==w[x])dp[x+1][(b+e+2)/10][0][1][0]=dp[x+1][(b+e+2)/10][0][1][1]=dp[x+1][(b+e+2)/10][1][1][0]=dp[x+1][(b+e+2)/10][1][1][1]=1;
    						if((b+f+2)%10==w[x])dp[x+1][(b+f+2)/10][0][1][0]=dp[x+1][(b+f+2)/10][0][1][1]=dp[x+1][(b+f+2)/10][1][1][0]=dp[x+1][(b+f+2)/10][1][1][1]=1;
    					}
    					if(dp[x][0][1][0][0])
    					{
    						if((a+c)%10==w[x])dp[x+1][(a+c)/10][1][0][0]=dp[x+1][(a+c)/10][1][0][1]=dp[x+1][(a+c)/10][1][1][0]=dp[x+1][(a+c)/10][1][1][1]=1;
    						if((a+d)%10==w[x])dp[x+1][(a+d)/10][1][0][0]=dp[x+1][(a+d)/10][1][0][1]=dp[x+1][(a+d)/10][1][1][0]=dp[x+1][(a+d)/10][1][1][1]=1;
    						if((b+c)%10==w[x])dp[x+1][(b+c)/10][1][0][0]=dp[x+1][(b+c)/10][1][0][1]=dp[x+1][(b+c)/10][1][1][0]=dp[x+1][(b+c)/10][1][1][1]=1;
    						if((b+d)%10==w[x])dp[x+1][(b+d)/10][1][0][0]=dp[x+1][(b+d)/10][1][0][1]=dp[x+1][(b+d)/10][1][1][0]=dp[x+1][(b+d)/10][1][1][1]=1;
    					}
    					if(dp[x][1][1][0][0])
    					{
    						if((a+c+1)%10==w[x])dp[x+1][(a+c+1)/10][1][0][0]=dp[x+1][(a+c+1)/10][1][0][1]=dp[x+1][(a+c+1)/10][1][1][0]=dp[x+1][(a+c+1)/10][1][1][1]=1;
    						if((a+d+1)%10==w[x])dp[x+1][(a+d+1)/10][1][0][0]=dp[x+1][(a+d+1)/10][1][0][1]=dp[x+1][(a+d+1)/10][1][1][0]=dp[x+1][(a+d+1)/10][1][1][1]=1;
    						if((b+c+1)%10==w[x])dp[x+1][(b+c+1)/10][1][0][0]=dp[x+1][(b+c+1)/10][1][0][1]=dp[x+1][(b+c+1)/10][1][1][0]=dp[x+1][(b+c+1)/10][1][1][1]=1;
    						if((b+d+1)%10==w[x])dp[x+1][(b+d+1)/10][1][0][0]=dp[x+1][(b+d+1)/10][1][0][1]=dp[x+1][(b+d+1)/10][1][1][0]=dp[x+1][(b+d+1)/10][1][1][1]=1;
    					}
    					if(dp[x][2][1][0][0])
    					{
    						if((a+c+2)%10==w[x])dp[x+1][(a+c+2)/10][1][0][0]=dp[x+1][(a+c+2)/10][1][0][1]=dp[x+1][(a+c+2)/10][1][1][0]=dp[x+1][(a+c+2)/10][1][1][1]=1;
    						if((a+d+2)%10==w[x])dp[x+1][(a+d+2)/10][1][0][0]=dp[x+1][(a+d+2)/10][1][0][1]=dp[x+1][(a+d+2)/10][1][1][0]=dp[x+1][(a+d+2)/10][1][1][1]=1;
    						if((b+c+2)%10==w[x])dp[x+1][(b+c+2)/10][1][0][0]=dp[x+1][(b+c+2)/10][1][0][1]=dp[x+1][(b+c+2)/10][1][1][0]=dp[x+1][(b+c+2)/10][1][1][1]=1;
    						if((b+d+2)%10==w[x])dp[x+1][(b+d+2)/10][1][0][0]=dp[x+1][(b+d+2)/10][1][0][1]=dp[x+1][(b+d+2)/10][1][1][0]=dp[x+1][(b+d+2)/10][1][1][1]=1;
    					}
    					if(dp[x][0][0][1][1])
    					{
    						if(e==w[x])dp[x+1][0][0][1][1]=dp[x+1][0][1][1][1]=1;
    						if(f==w[x])dp[x+1][0][0][1][1]=dp[x+1][0][1][1][1]=1;
    					}
    					if(dp[x][1][0][1][1])
    					{
    						if((e+1)%10==w[x])dp[x+1][(e+1)/10][0][1][1]=dp[x+1][(e+1)/10][1][1][1]=1;
    						if((f+1)%10==w[x])dp[x+1][(f+1)/10][0][1][1]=dp[x+1][(f+1)/10][1][1][1]=1;
    					}
    					if(dp[x][2][0][1][1])
    					{
    						if((e+2)%10==w[x])dp[x+1][(e+2)/10][0][1][1]=dp[x+1][(e+2)/10][1][1][1]=1;
    						if((f+2)%10==w[x])dp[x+1][(f+2)/10][0][1][1]=dp[x+1][(f+2)/10][1][1][1]=1;
    					}
    					if(dp[x][0][1][0][1])
    					{
    						if(c==w[x])dp[x+1][0][1][0][1]=dp[x][0][1][1][1]=1;
    						if(d==w[x])dp[x+1][0][1][0][1]=dp[x][0][1][1][1]=1;
    					}
    					if(dp[x][1][1][0][1])
    					{
    						if((c+1)%10==w[x])dp[x][(c+1)/10][1][0][1]=dp[x][(c+1)/10][1][1][1]=1;
    						if((d+1)%10==w[x])dp[x][(d+1)/10][1][0][1]=dp[x][(d+1)/10][1][1][1]=1;
    					}
    					if(dp[x][2][1][0][1])
    					{
    						if((c+2)%10==w[x])dp[x][(c+2)/10][1][0][1]=dp[x][(c+2)/10][1][1][1]=1;
    						if((d+2)%10==w[x])dp[x][(d+2)/10][1][0][1]=dp[x][(d+2)/10][1][1][1]=1;
    					}
    					if(dp[x][0][1][1][0])
    					{
    						if(a==w[x])dp[x][0][1][1][0]=dp[x][0][1][1][1]=1;
    						if(b==w[x])dp[x][0][1][1][0]=dp[x][0][1][1][1]=1;
    					}
    					if(dp[x][1][1][1][0])
    					{
    						if((a+1)%10==w[x])dp[x][(a+1)/10][1][1][0]=dp[x][(a+1)/10][1][1][1]=1;
    						if((b+1)%10==w[x])dp[x][(b+1)/10][1][1][0]=dp[x][(b+1)/10][1][1][1]=1;
    					}
    					if(dp[x][2][1][1][0])
    					{
    						if((a+2)%10==w[x])dp[x][(a+2)/10][1][1][0]=dp[x][(a+2)/10][1][1][1]=1;
    						if((b+2)%10==w[x])dp[x][(b+2)/10][1][1][0]=dp[x][(b+2)/10][1][1][1]=1;
    					}
    					if(dp[x][0][1][1][1]&&w[x]==0)dp[x+1][0][1][1][1]=1;
    					if(dp[x][1][1][1][1]&&w[x]==1)dp[x+1][0][1][1][1]=1;
    					if(dp[x][2][1][1][1]&&w[x]==2)dp[x+1][0][1][1][1]=1;
    				}
    				if(dp[s+1][0][0][0][0])return 3;
    				if(dp[s+1][0][0][0][1])return 3;
    				if(dp[s+1][0][0][1][0])return 3;
    				if(dp[s+1][0][0][1][1])return 3;
    				if(dp[s+1][0][1][0][0])return 3;
    				if(dp[s+1][0][1][0][1])return 3;
    				if(dp[s+1][0][1][1][0])return 3;
    				if(dp[s+1][0][1][1][1])return 3;
    			}
    		}
    	}
    	return 4;
    }
    int main()
    {
    	int T;scanf("%d",&T);
    	pre_work();
    	while(T--)
    	{
    		long long x;
    		scanf("%lld",&x);s=0;
    		while(x){w[++s]=x%10;x/=10;}
    		printf("%d
    ",ask());
    	}
    	return 0;
    }
    

    rp++

  • 相关阅读:
    salt+jenkins+gitlab+ecs构建公司部署平台
    解决openstack实例主机名后缀问题
    测试CentOS-7-x86_64-Minimal-1708.iso这种光盘安装效果
    dbca建库--linux上使用vnc图形化安装oracle10g版本
    使用mediainfo工具统计每个视频文件(媒体文件)播放时长
    rsync命令简单用法介绍
    winscp工具和xshell连接linux机器时切换到root账户
    zabbix和iptables的nat表结合使用
    adb和机顶盒一些常识
    VirtualBox虚拟机禁止时间同步
  • 原文地址:https://www.cnblogs.com/wzc521/p/11824193.html
Copyright © 2011-2022 走看看