谷歌的招聘

题解

把s当作一个队列 就是先进先出
在输入的时候就进行判断 这叫同步进行 嘿嘿
先把s加到L位 并判断是不是素数 是的话退出即可
若不是 则把s的第一位删掉 在下一次循环中s就有加了新的数字
在进行判断

 上来一看就想到了暴力 但一想不能那么简单 看了看时间200ms 就想到了这个
 算是比较快

#include <iostream>
#include <cmath>
#include <string>
//素数
bool shu(int x)
{
    for (int i = 2; i < sqrt(x); ++i)
    {
        if (x % i == 0)
            return 0;
    }
    return 1;
}
using namespace std;
int main()
{
    int N, L;
    int t = 0;
    cin >> N >> L;
    string s;
    for (int i = 0; i < N; ++i)
    {
        char c;
        cin >> c;
        //把c加到s里面
        s.push_back(c);
        if (s.size() == L)
        {
            //讲s转为int型 (函数)
            int x = stoi(s);
            if (shu(x))
            {
                cout << s;
                return 0;
            }
            else
            {
                //删除函数 用法可在我的博客里搜索
                s.erase(0, 1);
            }
        }
    }
    cout << "404";
    return 0;
}
发布了106 篇原创文章 · 获赞 25 · 访问量 7221

猜你喜欢

转载自blog.csdn.net/weixin_45653525/article/details/104226889
今日推荐