2024/2/23 考试

news/2025/2/26 3:34:39

第一题

One Clue

问题陈述

在数轴上有20000012000001块石头,这些石头的坐标分别为-1000000, -999999, -999998, \ldots, 999999, 1000000−1000000,−999999,−999998,…,999999,1000000。

其中,连续的KK块石头被涂成了黑色,其余的则是白色的。

此外,我们知道位于坐标XX的那块石头是黑色的。

请按升序打印所有可能含有黑色石头的坐标。

约束条件

  • 1 \leq K \leq 1001≤K≤100
  • 0 \leq X \leq 1000≤X≤100
  • 输入中的所有值均为整数。

输入

输入从标准输入中以如下格式给出:

K X

输出

按升序打印所有可能含有黑色石头的坐标,坐标之间用空格隔开。


示例输入 1

3 7

Copy

示例输出 1

5 6 7 8 9

Copy

我们知道有三块连续的黑色石头,并且坐标为77的石头是黑色的。有三种可能性:

  • 黑色石头分别位于坐标55、66和77。
  • 黑色石头分别位于坐标66、77和88。
  • 黑色石头分别位于坐标77、88和99。

因此,可能含有黑色石头的五个坐标为:55、66、77、88和99。


示例输入 2

4 0

Copy

示例输出 2

-3 -2 -1 0 1 2 3

Copy

负坐标也可能包含黑色石头。


示例输入 3

1 100

Copy

示例输出 3

100

这道题其实就是考虑 x-(k-1)一次缩小了1

加上x加上x+ (k+1)每次增大一到k减一

,代码如下,

#include<bits/stdc++.h>
using namespace std;
int n,a;
int main(){
//    freopen("loop.in","r",stdin);
//    freopen("loop.out","w",stdout);
cin>>n>>a;
if(n==1)
{
    cout<<a;
    return 0;
}
for(int i=n-1;i>=1;i--)
{
    cout<<a-i<<" ";
}
cout<<a<<" ";
for(int i=1;i<=n-1;i++)
{
    cout<<a+i<<" ";
}
    return 0;
}

第二题

B. Shift

问题描述

给定一个长度为NN的序列A = (A_1, A_2, \dots, A_N)A=(A1​,A2​,…,AN​)。

你将执行以下操作KK次:

  • 删除AA的初始元素并在AA的尾部添加一个00。

打印所有操作后的AA的元素。

约束

  • 1 \leq N \leq 1001≤N≤100

  • 1 \leq K \leq 1001≤K≤100

  • 1 \leq A_i \leq 1001≤Ai​≤100

  • 输入中的所有值都是整数。


输入

从标准输入以以下格式给出输入:

NN KK

A_1A1​ A_2A2​ \dots… A_NAN​

输出

在一行中打印操作后的AA的元素,用空格分隔。


样例输入1

3 2

2 7 8

样例输出1

8 0 0

在进行操作之前,A = (2, 7, 8)A=(2,7,8)。

进行一次操作后,A = (7, 8, 0)A=(7,8,0)。

进行两次操作后,A = (8, 0, 0)A=(8,0,0)。

因此,(8, 0, 0)(8,0,0)是答案。


样例输入2

3 4

9 9 9

样例输出2

0 0 0


样例输入3

9 5

1 2 3 4 5 6 7 8 9

样例输出3

6 7 8 9 0 0 0 0 0

这道题在考试中用了我很大时间,我在考试中把这道题想的太复杂了,其实只需要一个一个的去。

嗯模拟就行。但是我的思路则是用这种个值。减去从第几个值开始,从这个值开始往后输出就再输出n个零。

考试中的代码如下

#include<bits/stdc++.h>
using namespace std;
int n,a,b[110],a1,a2;
int main(){
//    freopen("loop.in","r",stdin);
//    freopen("loop.out","w",stdout);
cin>>n>>a;
for(int i=1;i<=n;i++)
{
    cin>>b[i];
}
if(a>=n)
{
    for(int i=1;i<n;i++)
    {
        cout<<"0"<<" ";
    }
    cout<<"0";
    return 0;
}
a1=n-a;
for(int i=a+1;i<=n;i++)
{
    cout<<b[i]<<" ";
}
for(int i=1;i<=a;i++)
{
    cout<<"0"<<" ";
}
    return 0;
}

第三题。

Bovine Bones

题目描述

Bessie 喜欢玩棋盘游戏和角色扮演游戏,因此她让 John 带她去了一家小店买了三个骰子。这三个骰子分别有 S1S1、S2S2 和 S3S3 面。每面的数字是 11 到骰子的面数,每个数字出现的概率相等。Bessie 想要知道在所有可能的骰子组合中,哪个三个骰子点数之和出现得最频繁。如果多个和出现的频率相同,报告最小的那个和。

数据范围
  • 2 \leq s_1 \leq 202≤s1​≤20
  • 2 \leq s_2 \leq 202≤s2​≤20
  • 2 \leq s_3 \leq 402≤s3​≤40
输入格式

第一行包含三个用空格分隔的整数:S1S1、S2S2 和 S3S3。

输出格式

输出一行,包含那个出现最频繁的最小整数和。

示例

样例输入 #1
3 2 3

Copy

样例输出 #1
5

Copy

提示

以下是所有可能的结果:

1 1 1 -> 3  
1 2 1 -> 4  
2 1 1 -> 4  
2 2 1 -> 5  
3 1 1 -> 5  
3 2 1 -> 6 
1 1 2 -> 4  
1 2 2 -> 5  
2 1 2 -> 5  
2 2 2 -> 6  
3 1 2 -> 6  
3 2 2 -> 7 
1 1 3 -> 5  
1 2 3 -> 6  
2 1 3 -> 6  
2 2 3 -> 7  
3 1 3 -> 7  
3 2 3 -> 8

这道题其实就是用三重for循环。

就能解决。

考试中的代码如下

#include<bits/stdc++.h>
using namespace std;
int n,m,s,a[110000],maxx=-999999;
int main(){
//    freopen("loop.in","r",stdin);
//    freopen("loop.out","w",stdout);
cin>>n>>m>>s;
for(int i=1;i<=n;i++)
{
    for(int j=1;j<=m;j++)
    {
        for(int k=1;k<=s;k++)
        {
//        cout<<i<<" "<<j<<" "<<k<<" "<<endl;
    a[i+j+k]++;
        }
    }
}
for(int i=1;i<=n;i++)
{
    for(int j=1;j<=m;j++)
    {
        for(int k=1;k<=s;k++)
        {
            if(a[i+j+k]>maxx)
            maxx=a[i+j+k];
        }
    }
}
for(int i=1;i<=n;i++)
{
    for(int j=1;j<=m;j++)
    {
        for(int k=1;k<=s;k++)
        {
            if(a[i+j+k]==maxx)
            {
            cout<<i+j+k;
            return 0;    
            }
        }
    }
}
    return 0;

第四题。

Glass and Mug

问题陈述

AtCoder公司销售玻璃杯和马克杯。

高桥有一个容量为GG毫升的玻璃杯和一个容量为MM毫升的马克杯,满足G<MG<M。

最初,玻璃杯和马克杯都是空的。在执行以下操作KK次之后,确定玻璃杯和马克杯中分别含有多少毫升的水。

  • 如果玻璃杯装满了水(即玻璃杯恰好含有GG毫升的水),则将玻璃杯中的水全部倒掉。
  • 否则,如果马克杯是空的,则给马克杯加满水。
  • 否则,从马克杯向玻璃杯转移水,直到马克杯为空或玻璃杯被装满为止。

约束条件

  • 1\leq K\leq 1001≤K≤100
  • 1\leq G<M\leq 10001≤G<M≤1000
  • GG、MM和KK均为整数。

输入

输入从标准输入中以如下格式给出:

KK GG MM

输出

在执行操作KK次后,按顺序打印玻璃杯和马克杯中含有的水量(以毫升为单位),中间用空格隔开。


示例输入 1

5 300 500

Copy

示例输出 1

200 500

Copy

操作将按照以下步骤进行。最初,玻璃杯和马克杯都是空的。

  • 给马克杯加满水。此时,玻璃杯有00毫升,马克杯有500500毫升的水。
  • 将水从马克杯转移到玻璃杯,直到玻璃杯被填满。此时,玻璃杯有300300毫升,马克杯有200200毫升的水。
  • 将玻璃杯中的水全部倒掉。此时,玻璃杯有00毫升,马克杯有200200毫升的水。
  • 将水从马克杯转移到玻璃杯,直到马克杯为空。此时,玻璃杯有200200毫升,马克杯有00毫升的水。
  • 给马克杯加满水。此时,玻璃杯有200200毫升,马克杯有500500毫升的水。

因此,在五次操作后,玻璃杯中有200200毫升,马克杯中有500500毫升的水。故应依次打印200200和500500,中间用空格隔开。


示例输入 2

5 100 200

Copy

示例输出 2

0 0

这道题题目其实就是让我们按照这个要求去走。但是需要特判一个条件。

如果

马克杯给玻璃杯倒水,玻璃杯满,那马克杯就不能倒了。

如果马克杯dow没了,玻璃杯还没满。那我马克杯还得再装。

代码如下

#include<bits/stdc++.h>
using namespace std;
int n,m,s,a,b,maxx=-999999;
int main(){
//    freopen("loop.in","r",stdin);a  pole
//    freopen("loop.out","w",stdout);b  mak
cin>>n>>m>>s;
for(int i=1;i<=n;i++)
{
if(a==m)
{
    a=0;
    }    
else if(b==0)
{
    b=s;
}
else
{
    if(a+b>=m)
    {
    b=b-(m-a);
        a=m;
    }
    else
    {
        a+=b;
        b=0;
    }
}
}
cout<<a<<" "<<b;
    return 0;


http://www.niftyadmin.cn/n/5867130.html

相关文章

C++ day4 练习

一、练习1 找到第一天mystring练习&#xff0c;实现以下功能&#xff1a; mystring str "hello"; mystring ptr "world"; str str ptr; str ptr; str[0] H; 【代码】&#xff1a; #include <iostream> #include <cstring> #include &l…

PHP入门基础学习九(PHP使用手册)

web交互 当表单的method属性提交方式为POST时,浏览器发送POST请求 当表单的method属性提交方式为GET时,浏览器发送GET请求 一、web表单交互 当PHP收到来自浏览器提交的数据后,会自动保存到超全局变量中。 超全局变量是PHP预定义好的变量,可以在PHP脚本的任何位置使用。…

华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)

文章目录 1. **查看固件和驱动版本**2. **查看CANN版本**3. **其他辅助方法**注意事项 在华为昇腾服务器上查看固件、驱动和CANN版本的常用方法如下&#xff1a; 1. 查看固件和驱动版本 通过命令行工具 npu-smi 执行以下命令查看当前设备的固件&#xff08;Firmware&#xff0…

Pytorch深度学习教程_6_激活函数

欢迎来到《pytorch深度学习教程》系列的第六篇&#xff01;在前面的五篇中&#xff0c;我们已经介绍了Python、numpy及pytorch的基本使用&#xff0c;进行了梯度及神经网络的实践。今天&#xff0c;我们将深入理解激活函数并进行简单的实践学习 欢迎订阅专栏进行系统学习&…

算法-数据结构-图的构建(邻接矩阵表示)

数据定义 //邻接矩阵表示图 //1.无向图是对称的 //2.有权的把a,到b 对应的位置换成权的值/*** 无向图* A B* A 0 1* B 1 0*/ /*** 有向图* A B* A 0 1* B 0 0*/import java.util.ArrayList; import java.util.List;/*** 带权图* A B* A 0 1* B 0 0*/ p…

Android NDK基本开发流程

Android NDK&#xff08;Native Development Kit&#xff09;开发流程允许开发者使用C/C代码来开发Android应用的部分功能&#xff0c;通常用于性能敏感的场景&#xff0c;如游戏、图像处理等。以下是Android NDK开发的基本流程&#xff1a; 1. 环境准备 安装Android Studio&a…

LabVIEW不规则正弦波波峰波谷检测

在处理不规则正弦波信号时&#xff0c;准确检测波峰和波谷是分析和处理信号的关键任务。特别是在实验数据、传感器信号或其他非理想波形中&#xff0c;波峰和波谷的位置可以提供有价值的信息。然而&#xff0c;由于噪声干扰、信号畸变以及不规则性&#xff0c;波峰波谷的检测变…

Docker 搭建 Redis 数据库

Docker 搭建 Redis 数据库 前言一、准备工作二、创建 Redis 容器的目录结构三、启动 Redis 容器1. 通过 redis.conf 配置文件设置密码2. 通过 Docker 命令中的 requirepass 参数设置密码 四、Host 网络模式与 Port 映射模式五、检查 Redis 容器状态六、访问 Redis 服务总结 前言…