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

题目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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytorch分布式训练

1 基本概念 rank&#xff1a;进程号&#xff0c;在多进程上下文中&#xff0c;我们通常假定rank 0是第一个进程或者主进程&#xff0c;其它进程分别具有1&#xff0c;2&#xff0c;3不同rank号&#xff0c;这样总共具有4个进程 node&#xff1a;物理节点&#xff0c;可以是一个…

分布式篇---第七篇

系列文章目录 文章目录 系列文章目录前言一、如何将长链接转换成短链接,并发送短信?二、长链接和短链接如何互相转换?三、长链接和短链接的对应关系如何存储?四、如何提高系统的并发能力?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一…

Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/4)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

Guitar Pro8.0.2吉他编曲软件 吉他打谱软件 吉他作曲软件

Guitar Pro8.0.2在音乐的大舞台上&#xff0c;谁不想成为一位吉他弹奏大师呢&#xff1f;但在现实中&#xff0c;学吉他并非一蹴而就&#xff0c;许多小伙伴都因为吉他的上手难度而被浇灭学习的热情。然而&#xff0c;这里有一款神奇的软件&#xff0c;叫做&#xff0c;它就像是…

bugku 渗透测试

场景1 查看源代码 场景2 用dirsearch扫描一下看看 ok看到登录的照应了第一个提示 进去看看 不出所料 随便试试admin/admin进去了 在基本设置里面看到falg 场景3 确实是没啥想法了 找到php在线运行 检查网络&#xff0c;我们发现这个php在线运行会写入文件 那我们是不是写…

【数据结构】树与二叉树(廿五):树搜索指定数据域的结点(算法FindTarget)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲3. 搜索指定数据域的结点a. 算法FindTargetb. 算法解析c. 代码实现a. 使用指向指针的指针b. 直接返回找到的节点 4. 代码整合 5.3.1 树的存储结构 5.…

Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线(实例分析)

Visual Studio 使用MFC 单文档工程从创建到实现绘制单一颜色直线和绘制渐变颜色的直线 本文主要从零开始创建一个MFC单文档工程然后逐步实现添加按键&#xff08;事件响应函数&#xff09;&#xff0c;最后实现单一颜色直线的绘制与渐变色直线的绘制o(&#xffe3;▽&#xffe…

利用chart.js来完成动态网页显示拆线图的效果

<% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><%! String list"[一月份, 二月份, 三月份,四月份, 五月份, 六月份, 七月]"; String label"我的一个折线图"; String data &qu…

RabbitMQ之MQ的可靠性

文章目录 前言一、数据持久化交换机持久化队列持久化消息持久化 二、LazyQueue控制台配置Lazy模式代码配置Lazy模式更新已有队列为lazy模式 总结 前言 消息到达MQ以后&#xff0c;如果MQ不能及时保存&#xff0c;也会导致消息丢失&#xff0c;所以MQ的可靠性也非常重要。 一、…

Scrapy爬虫异步框架(一篇文章齐全)

1、Scrapy框架初识 2、Scrapy框架持久化存储&#xff08;点击前往查阅&#xff09; 3、Scrapy框架内置管道&#xff08;点击前往查阅&#xff09; 4、Scrapy框架中间件&#xff08;点击前往查阅&#xff09; Scrapy 是一个开源的、基于Python的爬虫框架&#xff0c;它提供了…

SQL Server秘籍:数据分隔解密,数据库处理新境界!

点击上方蓝字关注我 在数据数据过程中经常会遇到数据按照一定字符进行拆分&#xff0c;而在不同版本的SQL SERVER数据库中由于包含的函数不同&#xff0c;处理的方式也不一样。本文将列举2个版本的数据库中不同的处理方法。 1. 使用 XML 方法 在SQL SERVER 2016版本之前&#x…

C#,数值计算——有理函数插值和外推(Rational_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 有理函数插值和外推 /// Rational Function Interpolation and Extrapolation /// Given a value x, and using pointers to data xx and yy, this routine returns …

2.1 总线问题

同一时间只能有一个去控制总线,因此需要一个输出开关去确保总线不出错 一旦同时开启输出开关,下面的锁存器还会被上面的数据修改如果上下同时开启可写,且同时开启可输出, 则短路

从零开始的RISC-V模拟器开发(一)环境搭建

前言 博主这系列文章是跟随中科院吴伟老师的b站公开课&#xff1a;[完结]从零开始的RISC-V模拟器开发第一季2021春季_哔哩哔哩_bilibili 记录的笔记。仅供学习使用&#xff0c;侵删&#xff01; 苦逼的博主现在自己毕设也是要设计类似的东西。哎。我需要做的是给一个现成的 R…

歌曲《难不难》由歌手荆涛演唱:面对挑战,勇敢前行

在人生的旅途中&#xff0c;我们都会遭遇种种困难和挑战。有时&#xff0c;一个看似简单的创意或想法&#xff0c;想要实现它却需要经历无数次的实践和辛酸。歌曲《难不难》由歌手荆涛演唱&#xff0c;以平实的语言和流畅的旋律&#xff0c;表达了面对困难和挑战时&#xff0c;…

01 _ 高并发系统:它的通用设计方法是什么?

我们知道&#xff0c;高并发代表着大流量&#xff0c;高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案&#xff0c;从而抵抗巨大流量的冲击&#xff0c;带给用户更好的使用体验。这些方案好似能操纵流量&#xff0c;让流量更加平稳地被系统中的服务和组件…

用友NC word.docx接口存在任意文件读取漏洞 附POC

@[toc] 用友NC word.docx接口存在任意文件读取漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使…

多线程详解(未完结)

文章目录 ⭐️写在前面的话⭐️一、线程简介1.1 进程1.2 线程1.3 多线程和多进程的区别1.4 总结 二、继承实现2.1 继承Thread类例子&#xff1a;网图下载 2.2 实现Runnable接口 (推荐)案例&#xff1a;火车站买票问题案例&#xff1a;龟兔赛跑 2.3 实现Callable接口 (了解即可)…

虚拟机可ping树莓派树莓派无法ping虚拟机 的解决办法

问题描述 在学习交叉编译的过程中&#xff0c;发现了树莓派无法ping通虚拟机的问题。所以我尝试了各种ping&#xff0c;发现&#xff1a; 虚拟机可以ping通树莓派和主机树莓派可以ping通主机主机可以ping通树莓派和虚拟机唯独树莓派没法ping通虚拟机 尝试各种方法后找到一种…

突破技术障碍:软件工程师如何应对项目中的难题?

在软件开发项目中&#xff0c;工程师常常会遇到各种技术难题。这些难题可能涉及到复杂的算法、不兼容的系统、难以预见的软件行为&#xff0c;或者其他许多方面。 以下是一些策略和方法&#xff0c;可以帮助软件工程师有效地应对这些挑战&#xff1a; 1、理解问题&#xff1a;…