比赛心得
大家好,我是一个刚刚开始学习Java的初学者。在学习的第9天,我决定参加CSDN周赛第61期,这是我人生中的第一次编程比赛。我很开心地分享,我最终获得了第10名的成绩,得到了63分。
作为一个初学者,这次比赛对我来说是一个很大的挑战。我很庆幸自己能够勇敢地参加,因为这是一个学习和成长的机会。
首先,让我谈谈我在判断题和选择题上的表现。我答对了判断题和选择题。而对于编程题,我做对了回文数,这让我非常高兴。但是,第二题风险投资人没有做出来,我在编码能力上还有很大的提升空间。我需要更加深入地理解算法和数据结构的知识,以便更好地解决这类编程问题。
感谢CSDN举办这样的比赛,给予我展示自己的机会。希望比赛越办越好!下期我也要参加!
最后,我希望在未来的学习中能够更加努力,持续提高自己的编程能力。我相信只要保持热情和毅力,争取高薪的职位不再是遥不可及的梦想!
参赛体验
因为是第一次参加,看到提示不能复制,就一直在手敲变量名,结果到后面发现可以复制本页面的内容,浪费了好多时间,下次比赛的时候就知道了!
题解
1.IPv4的合法地址编码共有256⁴=4294967296种形式。因此如果只使用IPv4,则在互联网上最多同时接入4294967296台终端
设备。
答案:错误
解析:
这个说法是不准确的。
IPv4 地址的合法编码范围是 0.0.0.0 到 255.255.255.255,共有约 42.94 亿个可能的地址。然而,并不是所有的 IPv4 地址都可供使用。
一部分 IPv4 地址是保留地址,用于特定目的,如私有网络、广播地址和环回地址等。此外,还有一些地址被用于特定的互联网协议或被保留作为未分配的地址块。因此,实际可用的 IPv4 地址数量要少于总数。
此外,即使是可用的 IPv4 地址,也不是每个地址都可以独立分配给一台终端设备。很多情况下,一个公共 IPv4 地址是通过路由器、防火墙或网络地址转换(NAT)来与多个终端设备共享的。这意味着多台终端设备可以使用同一个公共 IPv4 地址进行访问互联网。
因此,仅仅依据 IPv4 地址的编码数量来判断互联网上最多能够同时接入的终端设备数量是不准确的。实际上,IPv4 的地址空间已经相对有限,并且随着互联网的普及,可用的 IPv4 地址越来越稀缺。这也是为什么 IPv6 技术被引入,以提供更大的地址空间来满足日益增长的终端设备需求。
2.以下特征中,哪一项是计算机编码不可具备的:
A、唯一性
B、多义性
C、直观性
D、抽象性
答案:B
解析:
在给定的选项中,多义性是计算机编码不具备的特征。
A、唯一性:计算机编码可以使用唯一的标识符来表示不同的数据、对象或实体。例如,每个计算机编码可以表示一个独特的数字、字符或图像。
B、多义性:计算机编码无法自动理解和解释文本或语言中的多义性。多义性是指一个词或短语具有多个不同的含义,根据上下文和语境的不同而变化。计算机编码通常只能根据给定的规则和语义来处理数据,无法自动推断和处理多义性。
C、直观性:计算机编码是基于特定规则和语法的抽象表示形式,它们可能不直观地对应于人类感知的直观概念。虽然人们可以学习和理解编码系统,但编码本身可能不直观。
D、抽象性:计算机编码是一种抽象表示形式,用于表示和处理各种数据和信息。它们是对实际对象、概念或现象的抽象化,以便计算机能够处理和操作它们。
综上所述,多义性是计算机编码不具备的特征。计算机编码无法自动理解和解决文本或语言中的多义性问题,需要人工处理和解释多义性的含义。
3.以下哪项不是导致千年虫这个经典编码问题的原因?
A、过分强调存储效率导致的时间表示多义性
B、编码空间设计过窄
C、早年计算机的运算速度太慢
D、早年计算机的单位存储成本太高
答案:C
解析:
千年虫问题是指在二十世纪末至二十一世纪初的年份转换中可能发生的计算机编码错误。主要原因在于早期计算机系统中使用的日期表示只使用了两位数来表示年份,而忽略了千年的部分(例如,使用 “99” 表示1999年,而不是 “1999”)。当日期从 “99” 转变为 “00” 时,计算机可能会将其解释为1900年而不是2000年,导致日期计算和处理错误。
以下是对选项的分析:
A、过分强调存储效率导致的时间表示多义性:这是千年虫问题的一个原因。为了节省存储空间,一些计算机系统在设计时只使用了两位数来表示年份,导致时间表示的多义性。
B、编码空间设计过窄:这也是千年虫问题的原因之一。早期计算机系统的设计将年份的编码空间限制在两个数字范围内,未考虑到千年的变化。
C、早年计算机的运算速度太慢:计算机的运算速度不是导致千年虫问题的原因。千年虫问题与计算机的运算速度无关,而是与日期表示和处理的编码方式有关。
D、早年计算机的单位存储成本太高:计算机的存储成本是导致千年虫问题的间接原因。存储成本的考虑可能导致设计上的妥协。
综上所述,C、早年计算机的运算速度太慢不是导致千年虫问题的原因。
4.人类和计算机在信息编码时的主要差异在于前者要求较高的易读性,而后者以()为优先
答案:效率
解析:
人类在信息编码时通常注重易读性和可理解性。人类使用的语言、符号和图像等方式都是为了方便人们理解和交流。在设计信息编码时,易读性是人类的首要考虑因素之一,以便信息能够被人类直观地理解和使用。
相反,计算机在信息编码时更注重效率和可处理性。计算机使用的编码方式通常是为了在计算机系统中高效地存储、传输和处理数据。计算机编码通常是基于二进制表示,采用紧凑的数据结构和算法,以节省存储空间和提高运算速度。计算机编码更关注数据的准确性和可操作性,而不是人类的易读性。
因此,人类和计算机在信息编码时的主要差异在于前者强调易读性,而后者以效率为优先。
5.题目名称:最近的回文数
回文数是一个非负整数,它的各位数字从高位到低位和从低位到高位的排列是相同的。 以下是一些回文数的例子: 0 1
33 525 7997 37273 现在给到一个数,求离它最近的一个回文数(离与它的差的绝对值最小)。如果这个数本身就是回
文数,那么就输出它本身。
答案:
import java.util.Scanner;
import java.math.BigInteger;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String numString=sc.next();
String num=numString.replace("\"","");
BigInteger n=new BigInteger(num);
BigInteger nearHuiWen=findNearNumOfHuiWen(n);
System.out.println(nearHuiWen);
}
public static BigInteger findNearNumOfHuiWen(BigInteger n){
if(isHuiWen(n)){
return n;
}
BigInteger smallerNumOfHuiWen=n.subtract(BigInteger.ONE);
BigInteger largerNumOfHuiWen=n.add(BigInteger.ONE);
while(true){
if(isHuiWen(smallerNumOfHuiWen)){
return smallerNumOfHuiWen;
}
if(isHuiWen(largerNumOfHuiWen)){
return largerNumOfHuiWen;
}
smallerNumOfHuiWen=smallerNumOfHuiWen.subtract(BigInteger.ONE);
largerNumOfHuiWen=largerNumOfHuiWen.add(BigInteger.ONE);
}
}
public static boolean isHuiWen(BigInteger num){
String numString=num.toString();
int left=0;
int right=numString.length()-1;
while(left<right){
if(numString.charAt(left)!=numString.charAt(right)){
return false;
}
left++;
right--;
}
return true;
}
}
代码的主要思路如下:
1.导入需要使用的类:java.util.Scanner 用于从控制台读取输入,java.math.BigInteger 用于处理大整数。
2.在 main 方法中,创建一个 Scanner 对象来读取用户输入。然后,从输入中获取一个字符串表示的整数,并将双引号去除,得到一个纯数字的字符串。接着,将该字符串转换为 BigInteger 对象。
3.调用 findNearNumOfHuiWen 方法,传入刚刚获取的 BigInteger 对象。该方法的作用是找到给定数的最近回文数。
4.在 findNearNumOfHuiWen 方法中,首先判断给定数是否已经是回文数。如果是回文数,则直接返回该数。
5.如果给定数不是回文数,则分别创建两个 BigInteger 对象,分别表示比给定数小的数和比给定数大的数。通过一个循环不断减小较小数和增加较大数,检查它们是否是回文数。
6.一旦找到回文数,即可返回该数作为最近回文数。
7.isHuiWen 方法用于判断一个数是否是回文数。将数转换为字符串后,使用双指针的方式从两端向中间遍历,逐个比较字符是否相等。
8.在 main 方法中,将找到的最近回文数输出到控制台。
总体来说,这段代码的思路是通过逐渐增大和减小的方式,查找给定数的最近回文数。如果给定数本身就是回文数,则直接返回该数。如果不是回文数,则通过逐个增减的方式,找到离给定数最近的两个回文数,并返回其中一个。
6.题目名称:风险投资
风险投资是一种感性和理性并存的投资方式,风险投资人一般会对请公允的第三方评估公司对投资对象进行评级,每个风
险投资人的风险偏好都不太一样,但是他们的投资原则都一样: 1. 把投资对象编号为1、2、3……n。 2. 对于大于或等
于自己的投资评级的投资对象,都会进行投资。 3. 除此以外,还可以从比在已投资对象中编号最小者编号更小的投资对象
和比在已投资对象中编号最大者编号更大的投资对象中各随机选一个投资对象进行投资,以对冲过分理性带来的系统性风
险。当然,也可以不选。 现在已知投资对象的总数,以及每个风险投资人的投资笔数及进行投资了的投资对象编号。 问题
是:根据以上的数据,最少需要为投资对象制定多少个不同的评级级别?(假设所有风险投资人的评级标准是一致的。)
答案:不会 -。-
会的帅哥美女们可以解答一下哦!