我们分析可以知道,调换位置操作:调换位置后, 仍然包含原来的所有数字,只是顺序改变,因此,我们可以通过调换位置找到所有可能的数字排列。删除部分高位操作:删除高位部分,可以将 的某些前缀去掉,剩下的数字可能变得更短。
所以这道题的关键就是如果 中包含数字 ,那么我们可以通过删除所有其他数字或适当的调换位置使得最终只剩下 ,因此 可以变为 。如果 中不包含数字 ,则无论如何操作都不能得到 。
所以我们只需要检查 的所有位数中是否包含数字 ,如果包含则输出 "1",否则输出 "0"。
时间复杂度 , 为 的位数,。
记得开 .
#include <bits/stdc++.h>
using namespace std;
int main() {
long long T,n;
cin>>T;
while(T--)
{
cin>>n;
long long x,f=0;
while(n)
{
x=n%10;
n/=10;
if(x==1)
{
cout<<"1"<<endl;
f=1;
break;
}
}
if(!f)cout<<"0"<<endl;
}
}