蓝桥 历届试题 矩阵翻硬币 JAVA

问题描述
  小明先把硬币摆成了一个 n 行 m 列的矩阵。

随后,小明对每一个硬币分别进行一次 Q 操作。

对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转。

其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。

当小明对所有硬币都进行了一次 Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。

小明想知道最开始有多少枚硬币是反面朝上的。于是,他向他的好朋友小M寻求帮助。

聪明的小M告诉小明,只需要对所有硬币再进行一次Q操作,即可恢复到最开始的状态。然而小明很懒,不愿意照做。于是小明希望你给出他更好的方法。帮他计算出答案。
  
输入格式
  输入数据包含一行,两个正整数 n m,含义见题目描述。
输出格式
  输出一个正整数,表示最开始有多少枚硬币是反面朝上的。
样例输入
2 3
样例输出
1

思路:https://blog.csdn.net/wzt529/article/details/69062721

看了大佬的代码,才有的思路,我们要找的就是被翻了奇数次的硬币!!

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String n = scanner.next();
		String m = scanner.next();
		BigInteger ans1 = isSqrt(n);              // 调用方法
		BigInteger ans2 = isSqrt(m);
		BigInteger ans = ans1.multiply(ans2);     // *出最大值
		System.out.println(ans);                  // 答案
	}

	private static BigInteger isSqrt(String s1) {
		int mlen = s1.length();                   // 被开放长度
		int len;                                  // 开放后长度
		BigInteger beopened = new BigInteger(s1); // 被开方数
		BigInteger reserve;                       // 保存开方后的数
		BigInteger square;                        // 开方数的平方
		String character;                         // 保存arr转化后的字符串
		if (mlen % 2 == 0) {                      
			len = mlen / 2;                       // 判断长度
		} else {
			len = mlen / 2 + 1;
		}
		char[] arr = new char[len];               // 数组保存长度
		Arrays.fill(arr, '0');                    // 将给arr数组的每一个元素赋值0
		for (int up = 0; up < len; up++) {        // 最高处遍历数组。每一位都转换为开平方数平方后刚好不大于被开方数的程度
			for (char i = '1'; i <= '9'; i++) {
				arr[up] = i;
				character = String.valueOf(arr);       // 字符串取数组
				reserve = new BigInteger(character);   // 开方后的数
				square = reserve.multiply(reserve);    // 开方数平方=开放后的数*开方后的数
				if (square.compareTo(beopened) == 1) { // 开方数平方>被开方数
					arr[up] -= 1;                      // 如果指定的数小于参数返回 -1
					break;
				}
			}
		}
		return new BigInteger(String.valueOf(arr));    // 返回数组
	}
}

小剧场:只要思想不滑坡 办法总比问题多

发布了202 篇原创文章 · 获赞 149 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43771695/article/details/105115325