【牛客训练记录】牛客小白月赛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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现