嘘~ 正在从服务器偷取页面 . . .

洛谷U148215 Q数 题解


洛谷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;
}

文章作者: q779
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 q779 !
评论
  目录