Codeforces Bye 2023! - E - Mathematical Problem - 题解

目录

Mathematical Problem

题目大意:

思路解析:

代码实现:


Mathematical Problem

题目大意:

第 31 中学的数学家们接到了以下任务:

给你一个多数 n ,你需要找出 n 个不同的数,它们都是整数的平方。但事情没那么简单。每个数字的长度应为 n (并且不应有前导零),所有数字的多位数集应相同。例如, 234 和 432 、 11223和 32211的多位数集是相同的,而123 和112233 则不相同。

数学家们无法解决这个问题。你能解决吗?

输入

第一行包含一个整数 t ( 1 <= t <= 100) - 测试用例的数量。

接下来的 t 行包含一个多整数 n ( 1 <= n <= 99 )--需要查找的数字个数及其长度。

保证解决方案存在于给定的约束条件中。

保证 n^ 2的和不超过 10^5。

数字可以任意顺序输出。

输出

对于每个测试用例,您需要输出长度为 n 的 n个数字问题的答案。

如果有多个答案,则打印其中任何一个。                

思路解析:

Codeforces Bye 2023! - E - Mathematical Problem - 题解_第1张图片

解法2在暴力求解(n <= 10)过程中,可以发现当n为偶数时,并没有满足要求的数,可以推测大概偶数情况下都没有满足要求的数。

可以发现1...3和3....1和13....和31....的平方都有相似的数字结构,其中差别只在于出现0的为位置。

代码实现:

import java.io.IOException;
import java.util.*;

/**
 * @ProjectName: study3
 * @FileName: G
 * @author:HWJ
 * @Data: 2023/6/16 8:13
 */
public class Main {
    public static void main(String[] args) throws IOException {
        Scanner input = new Scanner(System.in);
        int t = input.nextInt();
        for (int o = 0; o < t; o++) {
            int n = input.nextInt();
            if (n == 1){
                System.out.println(1);
                continue;
            }
            for (int i = 0; i < n / 2; i++) {
                System.out.println("1" + String.join("", Collections.nCopies(i, "0")) + "6" +
                        String.join("", Collections.nCopies(i, "0")) + "9" + String.join("", Collections.nCopies(n - 3 -  i * 2, "0")));
                System.out.println("9" + String.join("", Collections.nCopies(i, "0")) + "6" +
                        String.join("", Collections.nCopies(i, "0")) + "1" + String.join("", Collections.nCopies(n - 3 -  i * 2, "0")));
            }
            System.out.println("196" + String.join("", Collections.nCopies(n - 3, "0")));
        }
    }

}

你可能感兴趣的:(算法)