题解:P12035 [USTCPC 2025] Hackergame

· · 题解

字符串的入门题。

根据题目要求一个 flag 的长度至少是 6,如果这个字符串长度小于 6 可以直接忽略掉。

然后我们枚举字符串从第 1 个字符到倒数第 5 个字符,如果从这个字符开始连续 5 个字符依次是 flag{,就进入下一层判断。

下一层判断是从 flag{ 右边一个字符开始,如果找到一个 { 就说明后面不可能有合法的 flag 了,直接跳过。如果找到 },就说明这是一个合法的 flag,输出就行。

最后如果没有合法的 flag,输出 NOT FOUND

#include<iostream>
using namespace std;
int main(){
    string s;
    cin>>s;
    if(s.size()<6){
        cout<<"NOT FOUND";
        return 0;
    }
    for(int i=0;i<=s.size()-5;i++){
        if(s.substr(i,5)=="flag{"){
            for(int j=i+5;j<s.size();j++){
                if(s[j]=='{')break;
                if(s[j]=='}'){
                    cout<<s.substr(i,j-i+1);
                    return 0;
                }
            }
        }
    }
    cout<<"NOT FOUND";
}