- 点击跳转专栏=>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/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。
 



















