洛谷U148215 Q数 题解
题目链接:U148215 Q数 (改编自 CF96B)
本题为私题,作者 q779 (没错,就是本人!)
题意:
q779最近迷上了一种数,叫做Q数
Q数是数码仅由1或6构成的素数,例如 $11$ 是一个Q数,$61$ 也是一个Q数
q779想知道第一个比 $N$ 大的Q数是多少,多组询问。
输入格式:
第一行 给出数据组数 $T$
接下来 $T$ 行 分别给出每一个 $N$
输出格式:
对于每组数据输出第一个比 $N$ 大的Q数
数据范围:
$1 \le T \le 10,1 \le N \le 1\times 10^{13}$
这道题纯属是做了 CF96B 以后搞得同类型题,看得出来我一点都不会出题,最多普及-吧。
这题非常简单,既然只有 $1$ 和 $6$ ,那就枚举所有的数就可以了,总共不超过 $O(n2^n)$ 个
代码:
// 2021年01月07日 23:47:57
#include<bits/stdc++.h>
using namespace std;
#define int long long
int T,n;
bool isprime(int x)
{
if(x<2)return 0;
for(int i=2; i*i<=x; i++)
{
if(x%i==0)return 0;
}
return 1;
}
void bfs()
{
queue<int> q;
q.push(0);
while(!q.empty())
{
int tmp = q.front();
q.pop();
if(tmp>n&&isprime(tmp))
{
cout<<tmp<<endl;
return;
}
q.push(tmp*10+1);
q.push(tmp*10+6);
}
}
signed main()
{
cin>>T;
while(T--)
{
cin>>n;
bfs();
}
return 0;
}