蓝桥杯专题-试题版-【分糖果】【矩阵翻硬币】【兰顿蚂蚁】

news2024/11/16 19:33:57
  • 点击跳转专栏=>Unity3D特效百例
  • 点击跳转专栏=>案例项目实战源码
  • 点击跳转专栏=>游戏脚本-辅助自动化
  • 点击跳转专栏=>Android控件全解手册
  • 点击跳转专栏=>Scratch编程案例
  • 点击跳转=>软考全系列
  • 点击跳转=>蓝桥系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

芝麻粒儿-空名先生

👉实践过程

需要所有整理的文档可底部卡片联系我,直接发压缩包。

😜分糖果

问题描述
  有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
  每个小朋友都把自己的糖果分一半给左手边的孩子。
  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。

反复进行这个游戏,直到所有小朋友的糖果数都相同为止。

你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
  程序首先读入一个整数N(2<N<100),表示小朋友的人数。
  接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
  要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4

import java.io.*;
public class Main {
	static int count2;
	static int[] arr;
	static boolean bl;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String str[] = br.readLine().split(" ");

		arr = new int[n];
		for (int i = 0; i < arr.length; i++)
			arr[i] = Integer.parseInt(str[i]);

		func();
	}

	public static void func() {

		if (ifSame()) {
			System.out.print(count2);
			return;
		}

		ifEven();

		if (ifSame()) {
			System.out.print(count2);
			return;
		}
		int temp = arr[arr.length - 1];
		for (int a = arr.length - 1; a >= 0; a--) {
			if (a > 0) {
				arr[a] = arr[a] / 2 + arr[a - 1] / 2;
			}
			if (a == 0) {
				arr[0] = arr[0] / 2 + temp / 2;
			}
		}
		func();
	}
	public static void ifEven() {
		for (int a = 0; a < arr.length; a++) {
			if (arr[a] % 2 == 0) {
				continue;
			} else {
				arr[a] += 1;
				count2++;
			}
		}
	}
	public static boolean ifSame() {
		int temp = arr[0];
		int count1 = 0;
		for (int a = arr.length - 1; a > 0; a--) {
			if (temp == arr[a]) {
				count1++;
			}
		}
		if (count1 == arr.length - 1) {
			bl = true;
		}
		return bl;
	}
}

😜矩阵翻硬币

小明先把硬币摆成了一个 n 行 m 列的矩阵。
 随后,小明对每一个硬币分别进行一次 Q 操作。
  对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转。
  其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。
  当小明对所有硬币都进行了一次 Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。
  小明想知道最开始有多少枚硬币是反面朝上的。于是,他向他的好朋友小M寻求帮助。
  聪明的小M告诉小明,只需要对所有硬币再进行一次Q操作,即可恢复到最开始的状态。然而小明很懒,不愿意照做。于是小明希望你给出他更好的方法。帮他计算出答案。
输入格式
  输入数据包含一行,两个正整数 n m,含义见题目描述。
输出格式
  输出一个正整数,表示最开始有多少枚硬币是反面朝上的。
样例输入
2 3
样例输出
1
数据规模和约定
  对于10%的数据,n、m <= 10^3;
  对于20%的数据,n、m <= 10^7;
  对于40%的数据,n、m <= 10^15;
  对于10%的数据,n、m <= 10^1000(10的1000次方)。

import java.math.*;
import java.util.*;
public class Main{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		String n = sc.next();
		String m = sc.next();
		BigInteger sum = new BigInteger("1");
		BigInteger bn = new BigInteger(n);
		BigInteger bm = new BigInteger(m);
		bn = kaifang(bn,new BigInteger(bn.toString().substring((int)(n.length()/2))),1);
	bm = kaifang(bm,new BigInteger(bm.toString().substring((int)(m.length()/2))),1);
		sum = sum.multiply(bn).multiply(bm);
		System.out.println(sum);
	}
	private static BigInteger kaifang(BigInteger b,BigInteger bi,int i) {
	if( (bi.multiply(bi).add(b)).divide(bi).divide(new BigInteger("2")).equals(bi) ){
			System.out.println(i);
			return bi;
		}
		else{
			return	kaifang(b,(bi.multiply(bi).add(b)).divide(bi).divide(new BigInteger("2")),i+1 );
		}
	}
}

😜兰顿蚂蚁

在这里插入图片描述

兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。
  平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。
  蚂蚁的头部朝向为:上下左右其中一方。
  蚂蚁的移动规则十分简单:
  若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格;
  若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。
  规则虽然简单,蚂蚁的行为却十分复杂。刚刚开始时留下的路线都会有接近对称,像是会重复,但不论起始状态如何,蚂蚁经过漫长的混乱活动后,会开辟出一条规则的“高速公路”。
  蚂蚁的路线是很难事先预测的。
  你的任务是根据初始状态,用计算机模拟兰顿蚂蚁在第n步行走后所处的位置。
输入格式
  输入数据的第一行是 m n 两个整数(3 < m, n < 100),表示正方形格子的行数和列数。
  接下来是 m 行数据。
  每行数据为 n 个被空格分开的数字。0 表示白格,1 表示黑格。
  接下来是一行数据:x y s k, 其中x y为整数,表示蚂蚁所在行号和列号(行号从上到下增长,列号从左到右增长,都是从0开始编号)。s 是一个大写字母,表示蚂蚁头的朝向,我们约定:上下左右分别用:UDLR表示。k 表示蚂蚁走的步数。
输出格式
  输出数据为两个空格分开的整数 p q, 分别表示蚂蚁在k步后,所处格子的行号和列号。
样例输入
5 6
0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
2 3 L 5
样例输出
1 3
样例输入
3 3
0 0 0
1 1 1
1 1 1
1 1 U 6
样例输出
0 0

import java.io.*;
public class Main {
	static int n, m;
	static int s, e;
	static char[] chs = { 'L', 'U', 'R', 'D', 'L' };
	static int count = 0;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s1[] = br.readLine().split(" ");
		n = Integer.parseInt(s1[0]);
		m = Integer.parseInt(s1[1]);
		int[][] arr = new int[n][m];
		for (int a = 0; a < n; a++) {
			String str[] = br.readLine().split(" ");
			for (int b = 0; b < m; b++) {
				arr[a][b] = Integer.parseInt(str[b]);
			}
		}
		int x, y;
		String s2[] = br.readLine().split(" ");
		x = Integer.parseInt(s2[0]);
		y = Integer.parseInt(s2[1]);
		char dec = s2[2].charAt(0);
		int z;
		z = Integer.parseInt(s2[3]);
		s = x;
		e = y;
		while (count < z) {
			if (arr[s][e] == 1) {
				for (int i = 0; i < chs.length; i++) {
					if (dec == chs[i]) {
						dec = chs[i + 1];
						break;
					}
				}
				arr[s][e] = 0;
				func(dec, s, e);
			}
			if (arr[s][e] == 0) {
				for (int j = 1; j < chs.length; j++) {
					if (dec == chs[j]) {
						dec = chs[j - 1];
						break;
					}
				}
				arr[s][e] = 1;
				func(dec, s, e);
			}
		}
		System.out.print(s + " " + e);
	}
	public static void func(char dec, int x, int y) {
		if (dec == 'L') {
			e -= 1;
			count++;
		}
		if (dec == 'U') {
			s -= 1;
			count++;
		}
		if (dec == 'R') {
			e += 1;
			count++;
		}
		if (dec == 'D') {
			s += 1;
			count++;
		}
	}
}

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7-WebApis-4

Web APIs - 4 目标: 了解DOM节点的增删改查&#xff0c;掌握利用数据操作页面&#xff0c;完成移动端通讯录案例 日期对象节点操作M端事件JS插件综合案例 日期对象 日期对象&#xff1a;用来表示日期和时间的对象 作用&#xff1a;可以得到当前系统日期和时间 Date是JavaSc…

Verilog基础之十一、移位寄存器实现

目录 一、前言 二、工程设计 ​2.1 工程代码 2.2 综合结果 2.3 仿真结果 一、前言 移位寄存器SRL在工程中属于使用频率较高个模块&#xff0c;可用于存储数据&#xff0c;实现串并转换&#xff1b;根据数据移动方向可分为左移寄存器&#xff0c;右移寄存器&#xff0c;左移…

UDP 的报文结构和特点

一.UDP报文的结构 这是存在于各大教科书上的 其实我们应该这样来看更好理解,从上到下从左到右 源端口号:发送方地址 目的端口号:接收方地址 UDP长度:UDP报头UDP载荷, 2个字节64KB(固定不变),这是UDP能接受的最大内容 校验和:检测数据是否出错 二.UDP特点 1.无连接: 直到对方端…

如何将采购报价请求流程自动化?

在当今快节奏的商业环境中&#xff0c;效率和速度是保持竞争力的关键。在采购管理中&#xff0c;企业经常为简化操作而努力的一个领域是报价请求过程。手动处理请求、与供应商沟通并跟踪答复&#xff0c;可能非常耗时且容易出错。 然而&#xff0c;随着像8Manage SRM等专业电子…

外键导致的事务问题的解决方案

Exception分析 异常内容&#xff1a; com.zaxxer.hikari.pool.ProxyConnection : HikariPool-1 - Connection com.mysql.cj.jdbc.ConnectionImpl192ef0c0 marked as broken because of SQLSTATE(08S01), ErrorCode(0) com.mysql.cj.jdbc.exceptions.CommunicationsExceptio…

英雄大战恶棍 VoxEdit 大赛

准备好踏上超乎想像的史诗之旅了吗&#xff1f;号召所有的创作者、梦想家和有远见的人&#xff0c;在令人振奋的英雄大战恶棍 VoxEdit 大赛中展示他们的艺术才能&#xff01;准备好让你们最喜欢的英雄和卑鄙的恶棍以前所未有的方式变得栩栩如生吧&#xff01; 踏入 VoxEdit 的领…

win11中文家庭版下载补丁的方法远程连接

前置知识 参考链接&#xff1a;关于开启WINDOWS家庭版RDPwrap远程桌面报错解决办法&#xff08;如&#xff1a;not listening&#xff09; 0、怎么关闭Windows防火墙&#xff1f; 0、windows安全中心怎么关闭 正文 1、关闭防火墙 2、关闭windows安全中心 3、按照链接&…

【数据库】MySQL的主从复制模式

MySQL的主从复制模式包括异步复制&#xff0c;全同步复制&#xff0c;半同步复制。MySQL默认为异步模式。MySQL5.7引入了一种新的半同步方案&#xff0c;并且在5.7引入了一个新的参数&#xff0c;rpl_semi_sync_master_wait_point&#xff0c;这个参数有两种取值&#xff0c;1&…

Zookeeper:什么是Zookeeper? ①

一、Zookeeper是什么 Zookeeper是一个开源的分布式协调服务框架&#xff0c;它是一个为分布式应用提供一致性服务的软件。 Zookeeper致力于提供一个高性能、高可用&#xff0c;且具备严格的顺序访问控制能力的分布式协调服务&#xff0c;是雅虎公司创建&#xff0c;是G…

Linux更新Firefox 52后突然没声音了?

如果你是一名 Linux 用户&#xff0c;将 Firefox 浏览器升级到了最新的 v52&#xff0c;却发现浏览器不再能播放声音了&#xff0c;你不是唯一遇到这个问题&#xff08;http://www.omgubuntu.co.uk/2017/03/firefox-52-no-sound-pulseaudio-alsa-linux?_utm_source1-2-2&#…

产品的0到1怎么做的?(一)

要想做好产品&#xff0c;不是学一下Axure和墨刀就可以做产品了&#xff0c;那只是术的冰山一解&#xff0c;要想做好产品首先要从道、法、器三维度展开&#xff0c;下面从道方向展开&#xff0c;分想自己的一点心得&#xff1a;道可以道&#xff0c;非常道&#xff0c;产品的道…

NR PDCP(一) overview

这篇开始理下NR PDCP的内容&#xff0c;上图是38.300有关PDCP的服务和功能概括截图。PDCP功能包括对user plane或control plane data的传输&#xff1b;维护PDCP SN&#xff1b;使用ROHC和EHC协议进行header压缩和解压缩&#xff1b;加密(防止窃听)和解密&#xff1b;完整性保护…

2、Redis7 十大数据类型(一)

命令官网 英文版&#xff1a;https://redis.io/commands/ 中文版&#xff1a;http://redis.cn/commands.html/ 1.1 类型说明 1.2 Key命令 命令不区分大小写&#xff0c;但是key区分 命令 说明 keys * //展示当前库的所有key exists key //判断某…

解决Word编号与标签之间间隙过大的问题

前言 今天在写文档时发现&#xff0c;当给标题设置中文编号&#xff08;一、二、三…&#xff09;后&#xff0c;编号与文字之间会产生一个非常大的间隙&#xff0c;使用的字体是“思源黑体M”&#xff0c;更换其他字体后依然如此&#xff0c;很不美观&#xff08;如图所示&am…

(二十二)数据符号化——矢量数据符号化②

数据符号化——矢量数据符号化② 目录 数据符号化——矢量数据符号化② 3.统计符号设置4.组合符号设置 3.统计符号设置 在 ArcMap 中可以使用符号系统来设置和定制地图元素的样式、颜色和标注。其中&#xff0c;统计符号可以用于表示一个或多个统计值的分布情况和趋势。 这是…

数据结构第六章 图 6.1-6.3 错题整理

6.1 6.C 加上一个点实现非连通 去除每个边都是一颗不同的生成树 一共n条边 13.C n个顶点、e条边的无向图&#xff0c;森林。树的角度看&#xff0c;除了根节点没有一条边与其对应&#xff0c;其他顶点都对应一条边&#xff0c;用顶点-边得出有多少颗树 14.A II 等于 也可以…

Git 分布式版本控制

Git概述 Git是分布式版本控制系统&#xff0c;可以快速高效地处理各种项目。具有廉价的本地库&#xff0c;方便的暂存区和多个工作流分支等特性。 版本控制目的&#xff1a;个人开发过渡到团队协作 分布式版本控制系统的优点&#xff1a; 1、服务器断网的情况下也可以…

DELL戴尔笔记本电脑Dell G5 15 5587原厂Win10系统镜像,原装OEM预装专用系统,恢复出厂状态

dell戴尔笔记本电脑&#xff0c;Dell G5 15 5587原厂Windows10系统镜像,原装OEM预装专用系统,恢复出厂状态 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件等预装程序 链接&#xff1a;https://pan.baidu.com/s/1Av93lwhHR16SRGJAf__NAg?pwdkqkc 提取码&#xff1a;kq…

maven官网下载,中央仓库官网,搜索官网

maven 官网 https://maven.apache.org/ maven 下载 https://maven.apache.org/ maven 各版本下载 maven中央仓库 https://repo.maven.apache.org/maven2/ maven 搜索jar文件版本 https://mvnrepository.com/ 阿里镜像官网&#xff0c; https://developer.aliyun.com/mirro…

iPhone手机如何添加桌面便签软件小组件?

iPhone手机的小组件功能受到了很多用户的喜爱&#xff0c;它可以让用户更加快捷的查看到APP里面的部分相关内容。这项功能和便签软件结合起来之后&#xff0c;甚至能产生1加1大于二的效果。那么iPhone手机如何添加桌面便签软件小组件呢&#xff1f;以iPhone手机端敬业签桌面便签…