刷题之莲子的软件工程学和机械动力学以及物理热力学
创始人
2024-02-21 11:58:20
0

目录

1、莲子的软件工程学

1)题目

 2)题目解析

 3)代码

2、莲子的机械动力学

 2)题目解析

 3)代码

3、莲子的物理热力学

1)、题目

 2)题目解析


1、莲子的软件工程学

1)题目

题目背景

在宇宙射线的轰击下,莲子电脑里的一些她自己预定义的函数被损坏了。

对于一名理科生来说,各种软件在学习和研究中是非常重要的。为了尽快恢复她电脑上的软件的正常使用,她需要尽快地重新编写这么一些函数。

输入格式

  • 共一行两个整数 a,b。

输出格式

  • 共一行一个整数fun(a,b) 的值。

说明/提示

对于全部数据,保证 a,b 在 32 位有符号整型范围内,并且 b ≠0。

 2)题目解析

题目意思就是由b来确定a的正负性,并输出其结构,a是32 位有符号整型的范围 是 

-2^31~2^31-1)。因此我们应该使用long作为a,b的基本数据类型。

 3)代码

import java.util.Scanner;public class Main {public static void main1(String[] args) {Scanner sc=new Scanner(System.in);long a=sc.nextInt();long b=sc.nextInt();if (b>0){System.out.println(Math.abs(a));}else if (b<0){System.out.println(Math.abs(a)*-1);}}
}

2、莲子的机械动力学

 

题目描述

题目背景的问题可以转化为如下描述:

给定两个长度分别为 n,m的整数 a,b,计算它们的和。

但是要注意的是,这里的 a,b 采用了某种特殊的进制表示法。最终的结果也会采用该种表示法。具体而言,从低位往高位数起,第 ii 位采用的是 i+1进制。换言之,相较于十进制下每一位的「逢 10进 1」,该种进制下第 i 位是「逢 i+1 进 1」。

下图所示,左边是十进制的竖式加法;右边是这种特殊进制的竖式加法。图中的红色加号表示上一位发生了进位。

输入格式

  • 第一行有两个整数n,m,分别表示 aa 和 bb 的位数。
  • 第二行有 n个整数,中间用空格隔开,从高到低位描述 a 的每个数码。
  • 第三行有 m 个整数,中间用空格隔开,从高到低位描述 b 的每个数码。

输出格式

  • 输出有若干个整数,从高到低位输出 a+b 在这种特殊表示法下的结果。

 

说明/提示

对于全部数据,保证 1≤n,m≤2×10^5,从低位往高位数起有 ai​∈[0,i],bi∈[0,i]。请使用 Java 或 Python 语言作答的选手注意输入输出时的效率。

 2)题目解析

 通读题目我们可以知道低位往高位数进制从2逐1递增,也就是最低位数是二进制的,要满2进1;倒数第二位数是三进制的,要满3进1;倒数第三位数是四进制的,要满4进1······第一位数是a,b最长数的长度+1进制。

需要特别小心的是第一位数是否要再进一位。

 3)代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int a=sc.nextInt();int b=sc.nextInt();//创建相应长度的数组int []ar1=new int[a];int []ar2=new int[b];for (int i=0;i

3、莲子的物理热力学

1)、题目

题目背景

莲子正在研究分子的运动。

每个分子都有一个速度,约定正方向为正,负方向为负。分子的数量极多,速度又并不一致,看上去杂乱无章。于是莲子希望调整部分分子的速度,使得最终分子们看上去整齐。

 

输入格式

  • 第一行有两个正整数 n,m,分别表示序列的长度和你最多可以进行的操作次数。
  • 第二行有 nn 个整数 a,描述给定的序列。

输出格式

  • 输出共一行一个整数,表示最优策略下能得到的最小极差。

 

 2)题目解析

 分别输入两个数n和m,分别表示n个数和可以操作m次,操作是指定最小值变最大值或者最大值变最小值。然后计算n个数中最大值和最小值的差,即“最小化最终序列的极差”

我使用的方法是枚举法,分别从最小值开始,和最大值开始,分别求出最小的极差。

过程如下图,从最大值的过程也是类似。

 

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int m=sc.nextInt();long []arr=new long[n];for (int i=0;i=n,所以数都会被操作一遍,即都是同一个数,此时min=0if(m>=n) {min=0;}else if (m==0)
//m=0,min=arr[arr.length-1]-arr[0];min=arr[arr.length-1]-arr[0];else{int i=0;long l,r;
//从左边,最小值开始while (i!=m){l=arr[i];int x=m-2*i;if (x>0)r=arr[arr.length-1-x];elser=arr[arr.length-1];if (r-l<0)continue;min=Math.min(min,r-l);i++;}
//从右边,最大值开始i=0;while (i!=m){r=arr[arr.length-1-i];int x=m-2*i;if (x>0)l=arr[x];elsel=arr[0];if (r-l<0)continue;min=Math.min(min,r-l);i++;}}System.out.println(min);}
}

感兴趣的也可以看看官方的题解:

【A组 —— 题目+题解】 
第五届传智杯-初赛【A组-题解】_h阿泉有个梦的博客-CSDN博客 
【B组 —— 题目+题解】 
第五届传智杯-初赛【B组-题解】_h阿泉有个梦的博客-CSDN博客 
【C组 —— 题目+题解】 
第五届传智杯-初赛【C组-题解】_h阿泉有个梦的博客-CSDN博客

         👍👍👍看完了点个赞吧👍👍👍

 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...