【牛客训练记录】牛客2025年除夕娱乐赛

训练情况

赛后反思

据说是临时准备的,今年好像没啥乐子题,除了两道猜猜题

A题

构造一个字符串使得 jiaran 子串至少出现 114514 次,直接输出 114514jiaran

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    for(int i = 1;i<=114514;i++) cout<<"jiaran";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

B题

判断回文子串个数,直接枚举子串即可

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    string s = "((()))";
    int n = s.size();
    int ans = 0;
    for(int i = 2;i<=n;i++){
        for(int j = 0;j+i-1<n;j++){
            string t = s.substr(j,i);
            string tt = t ;
            reverse(t.begin(),t.end());
            if(t == tt) ans++;
        }
    }
    cout<<ans<<endl;
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

C题

今天是除夕

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    cout<<"除夕";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

D题

简单的时间问题,全部化成秒去减,注意一下特判 24:00:00 要输出 00:00:00

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    int h,m;
    scanf("%d:%d",&h,&m);
    int now = 24*60*60 - h*60 - m;
    if(now == 24*60*60) now = 0;
    printf("%.2d:%.2d:%.2d",now/3600,now%3600/60,now%60);
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

E题

首先 1 肯定可以被整除,八进制转十进制需要乘 \(8^x\),所以 2 结尾的加上 8 的倍数可以被 2 整除,结尾是 4 的要被整除需要满足后两位能被 4 整除,显然加上 8 的倍数都满足,故输出 1 2 4

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    cout<<"1 2 4";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

F题

考公题,略

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    cout<<"幽默";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

I题

构造一个逆序对小于 \(m\) 的数列,我们直接构造逆序对为 \(0\) 的数列即可,直接输出 1~n

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    int n,m; cin>>n>>m;
    for(int i = 1;i<=n;i++) cout<<i<<" ";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

J题

众所周知,python的图标有点像蛇

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    cout<<"python";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}
posted @ 2025-01-29 01:17  MNNUACM_2024ZY  阅读(47)  评论(0)    收藏  举报