2020.11.15 天梯赛模拟赛

7-89 谷歌的招聘 (20分)

做法:参考了网上大佬的做法,用substr进行切片,再写一个函数判断素数即可

代码:

//去吧马里奥!!把AC公主救出来!!!
//        ********
//       ************
//       ####....#.
//     #..###.....##....
//     ###.......######
//        ...........
//       ##*#######
//    ####*******######
//   ...#***.****.*###....
//   ....**********##.....
//   ....****    *****....
//     ####        ####
//   ######        ######
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<string>
#include<map>
#include<sstream>
#include<cstring>
#include<vector>
#include<iomanip>
#include<queue>
#include<set>
#define LL long long
#define _64 __int64
const double PI = atan(1.)*4.;
const double EPS = 1e-6;
const int INF = 0x3f3f3f3f;
using namespace std;

int isprime(int a){
    if(a == 0){
        return 0;
    }
    if(a == 1){
        return 0;
    }
    for (int i = 2; i * i <= a;i++){
        if(a%i == 0){
            return 0;
        }
    }
    return 1;
}

int main(){
    int l, k;
    cin >> l >> k;
    string s;
    cin >> s;
    string num;
    int flag = 0;

    for (int i = 0; i <= l - k;i++){
        
        num = s.substr(i, k);
        int a = stoi(num);
        if(isprime(a) == 1){
            cout << num << endl;
            flag = 1;
            break;

        }
    }
    if(flag == 0){
        cout << 404 << endl;
    }
    
}

7-88 出栈序列的合法性 (25分)

做法:用一个栈存堆砌的数据,之后把数输进一个数组,将数和下标对应比较,或者是看栈顶元素是否能对上,对上就输出,对不上就不对了,如此如果出现对不上或者结束后栈里还有元素就no

代码:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
stack <int> s;
int temp1,temp2;
int b[200005];

int main(){
    int m,n,k;
    cin >> m >> n >> k;
    while(k--){
        while(s.empty() == 0){
            s.pop();
        }
        temp1 = temp2 = 1;
        for(int i = 1;i <= n;i++){
            cin >> b[i];
        }
        int flag = 1;
        while(1){
            if(temp1 == b[temp2]){
                temp1++;
                temp2++;
                //
            }else if(s.empty() == 0 && s.top() == b[temp2]){
                s.pop();
                temp2++;
            }else{
                if(temp1 > n){
                    break;
                }
                s.push(temp1);
                temp1++;
                if(s.size()>= m){
                    flag = 0;
                    break;
                }

            }
        }
        if(flag == 0 || s.empty() == 0){
            cout << "NO" << endl;
        }else{
            cout << "YES" << endl;
        }
    }
}

 

posted @ 2020-11-22 18:35  CCCCrack  阅读(130)  评论(0)    收藏  举报