【牛客训练记录】牛客小白月赛110

训练情况

赛后反思

C题没看到偶数,导致打错表了TAT,然后浪费了一点时间

A题

编号每 \(500\) 一组,我们分别除 \(500\) 和取模 \(500\) 就行了

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

using namespace std;

void solve(){
    int x; cin>>x;
    x--;
    cout<<(char)(x/500+'A');
    printf("%.3d",x%500+1);
}

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

B题

我们对答案字符串中的每一个字母都记录一下,对猜的答案如果对应位相同则是 g,如果出现过这个字母是 y,否则就是 r

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

using namespace std;

void solve(){
    string s,t;
    cin>>s>>t;
    map<char,bool> v;
    for(int i = 0;i<s.size();i++) v[s[i]] = 1;
    for(int i = 0;i<s.size();i++){
        if(s[i] == t[i]) cout<<"g";
        else if(v[t[i]]) cout<<"y";
        else cout<<"r";
    }
    cout<<endl;
    if(s==t) cout<<"congratulations"<<endl;
    else cout<<"defeat"<<endl;
}

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

C题

数位和是 \(3\) 的倍数和被 \(3\) 整除是等效的,所以我们考虑枚举 \(3,5\) 倍数打表,做公差发现循环节为 \(7\),并且两个循环节之间对应位差 \(30\),我们直接按照规律计算即可

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

using namespace std;

void solve(){
    int x;  cin>>x;
    int a = (x-1)%7;
    int b = (x-1)/7;
    if(a==0) cout<<3+30*b<<endl;
    else if(a==1) cout<<5+30*b<<endl;
    else if(a==2) cout<<9+30*b<<endl;
    else if(a==3) cout<<15+30*b<<endl;
    else if(a==4) cout<<21+30*b<<endl;
    else if(a==5) cout<<25+30*b<<endl;
    else if(a==6) cout<<27+30*b<<endl;
}

signed main(){
    int T; cin>>T; while(T--)
    solve();
    return 0;
}
posted @   MNNUACM_2024ZY  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示