题目传送门(内部题132)


输入格式

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


输出格式

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


样例

样例输入:

4
1818
23123
269105
21093203

样例输出:

1
2
3
3


数据范围与提示

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


题解

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

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

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

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

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

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

时间复杂度:$\Theta(2043360\times 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\n",ask());
}
return 0;
}

rp++

[CSP-S模拟测试]:小L的数(数位DP+模拟)的更多相关文章

  1. [CSP-S模拟测试]:简单的填数(贪心+模拟)

    题目描述 对于一个长度为$n$,且下标从$1$开始编号的序列$a$,我们定义它是「合法的」,当且仅当它满足以下条件:·$a_1=1$·对于$i\in [1,n),a_i\leqslant a_{i+1 ...

  2. [CSP-S模拟测试]:小奇挖矿2(DP+赛瓦维斯特定理)

    题目背景 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. 题目描述 现在有$m+1$个星球,从左到右标号为$0$到$n$,小奇最初 ...

  3. 洛谷 - P2657 - windy数 - 数位dp

    https://www.luogu.org/problemnew/show/P2657 不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. 这道题是个显然到不能再显然的数位dp了. 来个 ...

  4. 【BZOJ-1026】windy数 数位DP

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5230  Solved: 2353[Submit][Sta ...

  5. bzoj 1026 [SCOI2009]windy数 数位dp

    1026: [SCOI2009]windy数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...

  6. k好数 数位dp

    问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...

  7. bzoj 3530: [Sdoi2014]数数 数位dp

    题目 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运数. ...

  8. hdu3652(含有13且能被13整除的数)数位DP基础

    B-number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. BZOJ 3326 [SCOI2013]数数 (数位DP)

    洛谷传送门 题目: Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制$B$ 确定一个数数的区间$[L, R]$ 对于$[L, R] $间的每一个数, ...

随机推荐

  1. 搭建集群版Eureka Server

    注册中心作为微服务架构中的核心功能,其重要性不言而喻.所以单机版的Eureka Server在可靠性上并不符合现在的互联网开发环境.集群版的Eureka Server才是商业开发中的选择. Eurek ...

  2. Hadoop单节点启动分布式伪集群

    emm~ 写这篇博客只是手痒,因为开发环境用单节点就够了,生产环境肯定是真实集群,所以这个伪分布式纯属娱乐而已. 配置HDFS1. 安装好一台hadoop,可以参考这篇博客.2. 在hadoop目录下 ...

  3. Git复习(十)之常见报错和疑问

    报错 情况一:git pull报错 There is no tracking information for the current branch. Please specify which bran ...

  4. 一、redis学习(基础)

    redis  持久化 rdb aof 

  5. 帝国cms 描述和关键词动态获取

    之前列表页首页和内容页调用的关键词和描述的字段不一样,所以说需要写好几套模板. 下边这个判断就不用像之前做几套模板了,通过判断获取不一样的字段. $GLOBALS[navinfor] 这个判断的是此页 ...

  6. 解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题

    问题截图: 解决方案: 1.打开File --> Setting 窗口 2.搜索 Webpack 3.选择如下路径 问题解决

  7. webpack 四个核心概念

    webpack 是当下最热门的前端资源模块化和打包工具.它可以将许多松散的模块(如 CommonJs 模块. AMD 模块. ES6 模块.CSS.图片. JSON.Coffeescript. LES ...

  8. linux命令详解——ftp

    ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux 进行ft ...

  9. Delphi ScrollBar组件

  10. linux上如何安装mysql

    下载rpm包: wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 安装rpm:rpm -ivh mysql-com ...