day28—编程题

news/2024/11/15 4:53:48/

文章目录

  • 1.第一题
    • 1.1题目
    • 1.2涉及的相关知识
    • 1.3思路
    • 1.4解题
  • 2.第二题
    • 2.1题目
    • 2.2思路
    • 2.3解题

1.第一题

1.1题目

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

1.2涉及的相关知识

pow() 方法用于返回第一个参数的第二个参数次方
语法:double pow(double base, double exponent)
参数:base – 任何原生数据类型;exponent – 任何原生数据类型
返回值:返回第一个参数的第二个参数次方

1.3思路

  1. 因为每次分5堆都会多出来1个,所以我们借给猴子们4个,以致每次都可以刚好分成5堆 并且,每次给老猴子的桃子都不在我们借出的那4个中,这样最后减掉4就可以得到结果
  2. 假设最初有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
  3. 要满足最后剩余的为整数,并且x最小,则当 x+4=5 ^ n时,满足要求;此时,x=5 ^ n - 4;;老猴子得到的数量为:(x+4)*(4/5)^ n + n - 4 = 4 ^ n + n - 4,最后的 +n是因为每个小猴子都会多出一个给老猴子,-4是还了借的4个

1.4解题

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n;while ((n = sc.nextInt()) != 0 ) {long a = (long)(Math.pow(5,n) - 4);//桃子的总数long b = (long)(Math.pow(4,n) + n - 4);//老猴子拿到桃子的数量System.out.println(a + " " + b);}}
}

2.第二题

2.1题目

描述:
给定一个单链表,在链表中把第 L 个节点到第 R 个节点这一部分进行反转。
输入描述:
n 表示单链表的长度。
val 表示单链表各个节点的值。
L 表示翻转区间的左端点。
R 表示翻转区间的右端点。
输出描述:
在给定的函数中返回指定链表的头指针

2.2思路

  1. 反转链表:定义一个虚拟节点让他指向头结点,找到要反转链表的前一个节点,依次反转当前结点和下一个节点(先把要反转的下一个节点从链表中删除,再将这个结点头插入要反转的前一个节点的下一个节点)
  2. 创建链表是注意引入虚拟节点

2.3解题

import java.util.Scanner;
//定义结点
class Node {int val;Node next;public Node() {}public Node(int val) {this.val = val;}
}
public class Main {//链表翻转public static Node reverse(Node head, int left, int right) {if (head == null) {return null;}Node node = new Node(-1);//定义一个虚拟节点让他指向头结点node.next = head;Node pre = node;//找到要反转链表的前一个节点for (int i = 0; i < left - 1; i++) {pre = pre.next;}Node cur = pre.next;//指向要反转的第一个结点//依次反转当前结点和下一个节点for (int i = 0; i < right - left; i++) {Node curNext = cur.next;//先把要反转的下一个节点从链表中删除cur.next = curNext.next;//再将这个结点头插入pre的下一个节点curNext.next = pre.next;pre.next = curNext;}//返回头结点return node.next;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] array = new int[n];Node headPrev = new Node();//虚拟节点Node tmp = headPrev;//创建链表for (int i = 0; i < n; i++) {array[i] = sc.nextInt();Node node = new Node(array[i]);tmp.next = node;tmp = node;}int left = sc.nextInt();int right = sc.nextInt();Node newNode = reverse(headPrev.next, left, right);//打印反转后的链表while (newNode != null) {System.out.print(newNode.val + " ");newNode = newNode.next;}}
}

http://www.ppmy.cn/news/42953.html

相关文章

Elasticsearch:如何在 Python 中使用批量 API 为 Elasticsearch 索引文档

当我们需要创建 Elasticsearch 索引时&#xff0c;数据源通常没有规范化&#xff0c;无法直接导入。 原始数据可以存储在数据库、原始 CSV/XML 文件中&#xff0c;甚至可以从第三方 API 获取。 在这种情况下&#xff0c;我们需要对数据进行预处理以使其与 Bulk API 一起使用。 …

企业即时通讯软件开发基本功能有哪些?

即时通讯是基于互联网技术的新型交流沟通方式&#xff0c;是目前最流行的通讯方式&#xff0c;广泛的应用市场使得各种各样的即时通讯软件系统也层出不穷&#xff0c;企业即时通讯就是其中的一种延伸。是一种面向企业终端使用者的网络营销、网络沟通和内容管理的工具服务&#…

Windows wsl连接网络代理

使用 WSL 访问网络应用程序 | Microsoft Learn 为 WSL2 一键设置代理 - 知乎 (zhihu.com) 介绍 本文介绍开通了Windows WSL子系统之后&#xff0c;怎么在两者之间进行网络通讯&#xff1b;对在windows系统中开启了代理以后&#xff0c;如何在WSL中设置网络代理问题进行了详细…

从数据展示中汉字缺失了解字符编码知识

有人在使用皕杰报表时遇到如下问题&#xff1a; 有些汉字变成了“&#xff1f;”&#xff0c;这是为什么呢&#xff1f;实际上就是你用的字符集里没有这个汉字导致的&#xff0c;要想搞懂这个问题&#xff0c;还得从字符、字符集、字符编码说起。 所谓字符&#xff0c;就是各…

不服不行!盘点那些编程界的天才少年,11岁参加国际比赛,靠奖金赚了40万美金

程序员是一项专业性极强的工作&#xff0c;需要很强的思维能力和动手能力&#xff0c;所以大多数程序员要比普通人更聪明&#xff0c;与其他职业相比&#xff0c;程序员应该是最爱学习的一行了。科技网络的发展太快&#xff0c;新的技术层出不穷&#xff0c;时刻都要更新自己的…

【BAT】查询局域内所有的IP

【BAT】查询局域内所有的IP 在企业或家庭网络中&#xff0c;经常需要查询局域网内所有的 IP 地址。以下是一些方法可以帮助你实现这个目标&#xff1a; 使用 ping 命令 在 Windows 命令行中&#xff0c;可以使用 ping 命令向局域网中的所有主机发送 ICMP 请求&#xff0c;并…

Java基础——Map集合遍历方式

&#xff08;1&#xff09;方式一&#xff1a;键找值 先获取Map集合的全部键的Set集合。遍历键的Set集合&#xff0c;然后通过键提取对应值。 涉及API&#xff1a; 方法名称说明Set<K> keySet()获取所有键的集合V get(Object key)根据键获取值 &#xff08;2&#xff0…

【Python】Json读写操作_JsonPath用法详解

【Python】Json读写操作_JsonPath用法详解 文章目录【Python】Json读写操作_JsonPath用法详解1. 介绍2. 代码示例3. 参考1. 介绍 JSONPath是一种信息抽取类库&#xff0c;是从JSON文档中抽取指定信息的工具&#xff0c;提供多种语言实现版本&#xff0c;包括Javascript、Pytho…