(2023码蹄杯)省赛(初赛)第三场真题(原题)(题解+AC代码)

news2024/10/6 6:50:40

题目1:MC0227堆煤球

码题集OJ-堆煤球 (matiji.net)

思路:

1.i从l枚举到r,i是8的倍数就跳过,i不是8的倍数就用等差数列求和公式i(1+i)/2,最后累加到答案中即可

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int l,r;  cin>>l>>r;
    int ans=0;
    for(int i=l;i<=r;i++){
        if(i%8==0)  continue;   //注意这里是模8
        ans+=i*(1+i)/2; //等差数列求和公式
    }
    cout<<ans;
    return 0;
}

题目2:MC0228军团大战

码题集OJ-军团大战 (matiji.net)

思路:

1.找出字符数量最多,有多个输出字典序最小的那一个

2.开一个数组,统计每一个字母出现的次数

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    string  s;  cin>>s;
    vector<int>cnt(26); //统计每一个字符出现的次数
    int mx=0;
    for(char c:s){
        cnt[c-'A']++;
        mx=max(mx,cnt[c-'A']);
    }

    for(int i=0;i<26;i++)   //找到字典序最小的一个
        if(cnt[i]==mx){
            cout<<(char)(i+'A');
            return 0;
        }

    return 0;
}

题目3:MC0229武力对决

码题集OJ-武力对决 (matiji.net)

思路:

1.获得的最大经验值,用最大值减最小值得到

2.求最大值最小值,可以一趟遍历求得,也可以直接排序

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;
int const N=1e5+7;

int a[N];
int n;

int main( )
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)    scanf("%d",a+i);
    sort(a,a+n);

    cout<<a[n-1]-a[0]<<endl;

    return 0;
}

题目4:MC0230小码哥教数学

码题集OJ-小码哥教数学 (matiji.net)

思路:

1.互质就是最大公约数为1,让两组学生左移,就是取出最高一位,把它放到个位

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

int gcd(int a,int b){
    return b==0?a:gcd(b,a%b);
}

int main( )
{
    int a,b;    cin>>a>>b;
    
    int temp=a,n=0;
    while(temp) temp/=10,n++;
    int base=pow(10,n-1);   //10^(n-1)
   
    int ans=-1;
    for(int i=0;i<n;i++){
        if(gcd(a,b)==1){
            ans=i; break;   //满足互质
        }

        a=a%base*10+a/base;
        b=b%base*10+b/base;
    }
    cout<<ans;
    return 0;

}

题目5:MC0231圣诞树上的星星

码题集OJ-圣诞树上的星星 (matiji.net)

思路:

1.3的倍数输出|,不是3的倍数第几行输出几个星星

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;  cin>>n;
    for(int i=1;i<=n;i++){
        if(i%3==0)  puts("|");  //3的倍数
        else{
            for(int j=0;j<i;j++)    printf("*");
            puts("");
        }
    }
    return 0;
}

题目6:MC0232魔塔密码

码题集OJ-魔塔密码 (matiji.net)

思路:

1.密码是由每隔k-1个字符组成的,相当于由下标索引模k等于0的所有字符组成

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int k;  
    string s;   cin>>k>>s;
    for(int i=0;i<s.size();i++){
        if(i%k==0) cout<<s[i];
    }
    return 0;
}

题目7:MC0233地狱尖兵

码题集OJ-地狱尖兵 (matiji.net)

input:

3
5 5
....P
##..E
K#...
##...
.....
5 5
P....
.....
..E..
.....
....K
5 5
P#..E
.#.#.
.#.#.
.#.#.
...#K

output:

No solution
12
No solution

思路:bfs

1.小马妹先和其他小队回合,在一起前往制高点,先求P,K最短距离,再求K,E最短距离

2.求最短距离,可以跑一遍bfs,注意求P,K最短距离时要将制高点看成墙,表示不能通行

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;
int const N=507;

char s[N][N];
bool vis[N][N];
int n,m;
int dx[]={-1,1,0,0},dy[]={0,0,-1,1};
struct Node{
    int x,y,step;
};

int bfs(int x1,int y1,int x2,int y2){
    queue<Node>q;   q.push({x1,y1,0});
    memset(vis,0,sizeof vis);
    vis[x1][y1]=1;
    while(q.size()){
        Node temp=q.front();    q.pop();

        if(temp.x==x2&&temp.y==y2)  return temp.step;   //找到了终点

        for(int i=0;i<4;i++){
            int x=dx[i]+temp.x,y=dy[i]+temp.y;
            if(x<0||y<0||x>=n||y>=m)    continue;   //越界
            if(s[x][y]=='#'||vis[x][y])    continue;    //是墙,或者被遍历过
            q.push({x,y,temp.step+1});
            vis[x][y]=1;
        }
    }

    return -1;  //没有到终点
}

void solve(){
    scanf("%d%d",&n,&m);
    int px,py,kx,ky,ex,ey;
    for(int i=0;i<n;i++)   scanf("%s",s[i]);

    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++){
            if(s[i][j]=='P')    px=i,py=j;
            else if(s[i][j]=='K')   kx=i,ky=j;
            else if(s[i][j]=='E')   ex=i,ey=j;
        }

    //小马妹要和其他小队先会和,此时制高点也看成墙
    s[ex][ey]='#';  
    int t1=bfs(px,py,kx,ky);
    s[ex][ey]='E';  //复原
    int t2=bfs(kx,ky,ex,ey);

    if(t1==-1||t2==-1)  puts("No solution");
    else cout<<t1+t2<<endl;
}

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

题目8:MC0234激光扫描游戏

码题集OJ-激光扫描游戏 (matiji.net)

思路:

1.按要求模拟,遇到炸炸弹,变化扫描范围

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;
int const N=1e3+7;

int n;
vector<int>g[N];    //g[i]:存的是第i的的炸弹

int main( )
{
    cin>>n;
    for(int i=0;i<n;i++){
        int x,y;    cin>>x>>y;
        g[x].push_back(y);
    }

    int ans=0,r=499;
    for(int i=0;i<1000;i++){
        int cur_r=r;
        ans+=cur_r+1;

        //遇到炸弹,变化为:行-列
        for(int j:g[i]){
            if(cur_r>=j)    r=r+(i-j);
        }
        
        //扫描位置最大为999,最小为0
        if(r<0) r=0;
        if(r>999)   r=999;
    }

    cout<<ans;
    return 0;
}

题目9:MC0235数数游戏

码题集OJ-数数游戏 (matiji.net)

思路:

1.从1枚举到n,分别统计满足要求的情况

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

//能被3整除或包含数字3
bool check3(int n){
    if(n%3==0)  return true;
    while(n){
        if(n%10==3) return true;
        n/=10;
    }
    return false;
}

//能被5整除或包含数字5
bool check5(int n){
    if(n%5==0)  return true;
    while(n){
        if(n%10==5) return true;
        n/=10;
    }
    return false;
}

int main( )
{
    int n;  cin>>n;

    int a=0,b=0,c=0;
    for(int i=1;i<=n;i++){
        if(check3(i)&&check5(i))    c++;    //规则一二都满足
        else{
            if(check3(i))   a++;    //满足规则一
            if(check5(i))   b++;    //满足规则二
        }
    }

    printf("%d\n%d\n%d\n",a,b,c);
    return 0;
}

题目10:MC0236跳跳棋

码题集OJ-跳跳棋 (matiji.net)

input:

4
4
2 3 5 8
2 3 5 8
2 3 5 8
2 3 5 8

output:

8

思路:模拟

1.模拟跳到的格子,是质数答案++

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;
int const N=107;

int a[N][N];
int n,m;

//检查是否为质数
bool check(int n){
    for(int i=2;i<=n/i;i++)
        if(n%i==0)  return false;
    return true;
}

int main( )
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)   scanf("%d",&a[i][j]);
    
    int ans=0;
    int i=1,j=1;
    while(i<=n){
        if(check(a[i][j]))  ans++,j+=a[i][j]%10;   //是质数答案++
        else j++;   //不是质数向右跳一格
        if(j>m) i++,j=1;
    }   
    cout<<ans;
    return 0;
}

题目11:MC0237小狗巴克

码题集OJ-小狗巴克 (matiji.net)

思路:

1.对原字符串去除'!',得到一个新的字符串,然后用新的字符串调用find函数,查找目标字符串

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    string s,t; cin>>s>>t;
    
    string new_s;
    for(int i=0;i<s.size();i++) {
        if(s[i]=='!')   continue;   //去除'!'
        new_s+=s[i];
    }

    int idx=new_s.find(t);  //用新的字符串直接调用find函数
    if(idx!=-1) puts("True");
    else puts("False");

    return 0;
}

题目12:

占时更新

题目13:MC0239小码哥玩字母独

码题集OJ-小码哥玩字母独 (matiji.net)

思路:

1.开一个hash数组,将主对角线的字符,加入数组中,如果一个字符出现了两次,则输出refuse,并结束程序,如果到最后都没有出现相同的字符输出accept

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;
int const N=107;

int n;
char str[N][N];
bool vis[26];   //hash数组

int main( )
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%s",str[i]+1);
    
    for(int i=1;i<=n;i++){
        char c=str[i][i];
        if(vis[c-'a']){ 
            puts("refuse"); //当前字符出现了2次了
            return 0;
        }
        vis[c-'a']=true;
    }

    puts("accept");
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1251269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

name 属性:提高 Vue 应用可维护性的关键

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

基于springboot实现乒乓球预约管理系统项目【项目源码】

基于springboot实现乒乓球预约管理系统演示 系统的开发环境 浏览器&#xff1a;IE 8.1&#xff08;推荐6.0以上&#xff09; 开发使用语言&#xff1a;JAVA JDK版本&#xff1a;JDK_8 数据库管理系统软件&#xff1a;Mysql 运行平台&#xff1a;Windows 7 运行环境&#…

【微服务专题】SpringBoot自动配置简单源码解析

目录 前言阅读对象阅读导航前置知识什么是自动配置0.1 基本概念0.2 SpringBoot中的【约定大于配置】0.3 从SpringMVC看【约定大于配置】0.4 从Redis看【约定大于配置】0.5 小结 笔记正文一、EnableAutoConfiguration源码解析二、SpringBoot常用条件注解源码解析2.1 自定义条件注…

性能测试【一】:Jmeter的常用操作

性能测试【一】&#xff1a;Jmeter的常用操作 一、使用命令行方式运行Jmeter1、为什么2、怎么用3、示例4、结果文件 二、生成动态报告1、准备2、命令3、报告示例4、报告释义 三、使用问题汇总 推荐使用命令行运行&#xff0c;GUI方式会经常卡死&#xff0c;尤其跑稳定性 一、使…

《使用Python将Excel数据批量写入MongoDB数据库》

在数据分析及处理过程中&#xff0c;我们经常需要将数据写入数据库。而MongoDB作为一种NoSQL数据库&#xff0c;其具有强大的可扩展性、高性能以及支持复杂查询等特性&#xff0c;广泛用于大规模数据存储和分析。在这篇文章中&#xff0c;我们将使用Python编写一个将Excel数据批…

机器学习-线性回归

线性模型是一类用于建模输入特征与输出之间线性关系的统计模型。这类模型的基本形式可以表示为&#xff1a; 其中&#xff1a; 是模型的输出&#xff08;目标变量&#xff09;。 是截距&#xff08;常数项&#xff0c;表示在所有输入特征都为零时的输出值&#xff09;。 是权重…

CCFCSP试题编号:202206-2试题名称:寻宝!大冒险!

一、题目 二、分析 因为藏宝图左下角位置一定是一棵树&#xff0c;所以只要把所有绿化图中每一棵树&#xff0c;与之相匹配&#xff0c;然后判断&#xff0c;是否整个藏宝图都是绿化图的一部分&#xff0c;如果是那就计数count1。所以来看&#xff0c;结果count最大也就是n(绿…

【c++j继承】

在编程领域中&#xff0c;面向对象是一种非常流行的程序设计方法。C 继承是面向对象编程中的一个重要概念&#xff0c;它允许我们创建一个新的类&#xff08;子类&#xff09;来继承已有的类&#xff08;父类&#xff09;的属性和方法。通过继承&#xff0c;我们可以实现代码的…

【vue实战项目】通用管理系统:学生列表

本文为博主的vue实战小项目系列中的第五篇&#xff0c;很适合后端或者才入门的小伙伴看&#xff0c;一个前端项目从0到1的保姆级教学。前面的内容&#xff1a; 【vue实战项目】通用管理系统&#xff1a;登录页-CSDN博客 【vue实战项目】通用管理系统&#xff1a;封装token操作…

CMD - ping

文章目录 前言参数 前言 ping 命令主要测试到达指定 IP 或主机的连通性. 参数 -t: ping 指定的计算机直到中断 -a: 将地址解析为主机名 -n count: 要发送的回显请求数

【Linux】常见指令及周边知识(一)

【Linux】常见指令及周边知识&#xff08;一&#xff09; 一、初始Linux操作系统1.Linux背景2.如何使用Linux 二、学习Linux之前的预备周边知识&#xff08;重点&#xff09;&#xff1a;1.什么叫做文件&#xff1f;2. Linux下的路径分隔符3.在Linux中为什么会存在路径&#xf…

电子学会C/C++编程等级考试2022年03月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:温度统计 现有一段时间的温度数据,请统计指定温度出现的次数。 时间限制:1000 内存限制:65536输入 第一行一个整数n,表示温度数据的个数。(0 < n ≤ 200) 第二行n个整数,以空格分隔,每个整数表示一个温度,温度的范围大…

Python中的数据类型

如果说python中的数据类型,那我们要从标准数据类型说起,在python中标准数据类型如下: 数字类型: 数字数据类型用于存储数值。 他们是不可改变的数据类型&#xff0c;这意味着改变数字数据类型会分配一个新的对象。 在python2.X中数据类型分的比较多,有int(有符号整型),long(…

训练日志——wandb

目录 安装与登录基础使用与可视化常用函数wandb.init()wandb.config()wandb.log()wandb.finish()wandb.watch() 参考 安装与登录 安装 pip install wandb注册并登录 https://wandb.ai/site客户端登陆 在终端中输入wandb login 然后出现You can find you API key的一串网站&am…

cocos游戏引擎,弹出框浏览器正常,但到了抖音、微信小游戏就不显示的bug原因及解决办法

本篇文章主要讲解&#xff1a;cocos游戏引擎&#xff0c;浏览器测试时弹出框好好的&#xff0c;无任何报错&#xff0c;构建项目到抖音、微信小游戏时无法弹出弹出框&#xff0c;但又无报错的问题原因及解决办法。 日期&#xff1a;2023年11月25日 作者&#xff1a;任聪聪 问题…

系列十四、BeanFactory vs FactoryBean vs ApplicationContext

一、BeanFactory 1.1、概述 IOC思想是基于IOC容器完成的&#xff0c;IOC容器的底层就是对象工厂&#xff0c;其核心接口为BeanFactory&#xff0c;BeanFactory是一个工厂类&#xff0c;负责生产和管理各种各样的bean&#xff0c;也是Spring内部的使用接口&#xff0c;不提供给…

基于springboot实现学生成绩管理系统项目【项目源码+论文说明】

基于springboot实现学生成绩管理系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&am…

一键提取随机画面为JPG图片,实现高效剪辑

你是否曾经在观看视频时&#xff0c;遇到了一些精彩瞬间&#xff0c;却无法将其保存下来&#xff1f;现在&#xff0c;我们为你带来了一款全新的工具——视频批量剪辑&#xff0c;一键提取随机画面为JPG图片&#xff0c;让你可以轻松留住这些精彩瞬间&#xff01; 首先&#xf…

C++入门第九篇---Stack和Queue模拟实现,优先级队列

前言&#xff1a; 我们已经掌握了string vector list三种最基本的数据容器模板&#xff0c;而对于数据结构的内容来说&#xff0c;其余的数据结构容器基本都是这三种容器的延申和扩展&#xff0c;在他们的基础上扩展出更多功能和用法&#xff0c;今天我们便来模拟实现一下C库中…

CDA一级备考思维导图

CDA一级备考思维导图 第一章 数据分析概述与职业操守1、数据分析概念、方法论、角色2、数据分析师职业道德与行为准则3、大数据立法、安全、隐私 CDA一级复习备考资料共计七个章节&#xff0c;如需资料&#xff0c;请留言&#xff0c;概览如下图&#xff1a; 第一章 数据分析…