笔试强训day28

本文详细讲解了Java编程的基础知识,包括选择题中的Socket编程、接口定义、垃圾回收机制、 instanceof 运算符和实例计算等。重点介绍了‘猴子分桃’问题的解决策略,用以演示类推算法在编程中的应用。同时,给出了编程题部分的解决方案,涉及多猴子分配桃子的数学逻辑和编程实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、选择题

1、如果希望监听TCP端口9000,服务器端应该怎样创建socket?
A new Socket(“localhost”,9000);
B new ServerSocket(9000);
C new Socket(9000);
D new ServerSocket(“localhost”,9000);
他的回答: D (错误)
正确答案: B
服务器端使用ServerSocket(int port)-默认在本地指定端口号监听TCP端口客户端使用Socket来连接服务器 Socket(IP,port)。
2、下列哪个类的声明是正确的?
A abstract final class HI{}
B abstract private move(){}
C protected private number;
D public abstract class Car{}
他的回答: D (正确)
正确答案: D
3、java 接口的修饰符可以为()
A private
B protected
C final
D abstract
他的回答: D (正确)
正确答案: D
4、jre 判断程序是否执行结束的标准是()
A 所有的前台线程执行完毕
B 所有的后台线程执行完毕
C 所有的线程执行完毕
D 和以上都无关
他的回答: C (错误)
正确答案: A
JRE:Java运行时环境
JDK:Java开发工具包,包含了JRE
什么时候Java进程认为程序全部执行完毕:所有前台线程(用户线程)执行完毕 。setDameon(true)
一般我们创建的线程都是前台线程后台线程:JVM垃圾回收线程。
5、int i=5;
int s=(i++)+(++i)+(i–)+(–i);
s=( )//s 的值是什么?

A 28
B 25
C 21
D 26
E 24
F 23
他的回答: C (错误)
正确答案:E
在这里插入图片描述

6、如下语句通过算术运算和逻辑运算之后i和 j的结果是( )

int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//打印出i和j的值。
}

A i=0;j=0
B i=1;j=1
C i=0;j=1
D i=1;j=0
他的回答: D (正确)
正确答案: D
7、下面不属于Object类中方法的是:
A hashCode()
B finally()
C wait()
D toString()
他的回答: C (错误)
正确答案: B
finally是一个代码块,不是一个方法。
8、下列哪项不属于jdk1.6垃圾收集器?
A Serial收集器
B parNew收集器
C CMS收集器
D G1收集器
他的回答: D (正确)
正确答案: D
D是JDK7有的。
9、instanceof运算符能够用来判断一个对象是否为:
A 一个类的实例
B 一个实现指定接口的类的实例
C 全部正确
D 一个子类的实例
他的回答: B (错误)
正确答案: C
10、对于java类型变量char c,short s,float f,double d,表达式c*s+f+d的结果类型为()
A float
B char
C short
D double
他的回答: D (正确)
正确答案: D
只要牵扯到算数运算,所有类型都会转为最大的类型而后进行运算。

二、编程题

【猴子分桃】
老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。
第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。
第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。
后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。
这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。
输入描述:
输入包括多组测试数据。
每组测试数据包括一个整数n(1≤n≤20)。
输入以0结束,该行不做处理。

输出描述:
每组测试数据对应一行输出。
包括两个整数a,b。
分别代表开始时最小需要的桃子数,和结束后老猴子最少能得到的桃子数。

示例1:
输入
5\n1\n0
输出
3121 1025\n1 1

**【解题思路】:**公式类推
因为每次分5堆都会多出来1个,所以我们借给猴子们4个,以致每次都可以刚好分成5堆 并且,每次给老猴子的桃子都不在我们借出的那4个中,这样最后减掉4就可以得到结果。 假设最初由x个桃子,我们借给猴子4个,则此时
有x+4个, 第一个猴子得到(x+4)/5,剩余(x+4)(4/5)个 第二个猴子分完后剩余(x+4) (4/5)^2个 第三个猴子分完后剩余(x+4) (4/5)^3个 依次类推,第n个猴子分完后剩余(x+4)(4/5)^n 要满足最后剩余的为整
数,并且x最小,则当 x+4=5n时,满足要求;此时,x=5n - 4; 老猴子得到的数量为:x+4)*(4/5)^n + n - 4= 4^n + n - 4 最后的 +n是因为每个小猴子都会多出一个给老猴子,-4是还了借的4个。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
牛客网ACM模式代码

import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            while (sc.hasNext()){
                int n = sc.nextInt();
                if(n==0) break;
                    long a = (long) (Math.pow(5, n) - 4);
                    long b = (long) (Math.pow(4, n) + n - 4);
                    System.out.println(a + " " + b);
                }
            }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值