蓝桥杯-2/14天-完全平方数【另类思路】

简介: 蓝桥杯中一些题本身比较难,我们可以换种思路,能拿多少拿多少,比如这道题,拿个一半的分数也不错

蓝桥杯中一些题本身比较难,我们可以换种思路,能拿多少拿多少,比如这道题,拿个一半的分数也不错

题目

问题描述

一个整数 aa 是一个完全平方数, 是指它是某一个整数的平方, 即存在一个 整数 bb, 使得 a=b^2a=b2 。

给定一个正整数 nn, 请找到最小的正整数 xx, 使得它们的乘积是一个完全平 方数。

输入格式

输入一行包含一个正整数 nn 。

输出格式

输出找到的最小的正整数 xx 。

样例输入 1

12

样例输出 1

3

样例输入 2

15

样例输出 2

15

运行限制

最大运行时间:1s

最大运行内存: 256M

思路

看了一圈大佬的答案实在看不懂,有点神奇,但比赛不会做我们也可以用暴力累加,多少拿点分

我的笨鸟思路:


完全平方数开根一定是一个整数,所以,我们可以把它当做字符串来思考,判断开根后的数的小数点后的位数,如果<=1(因为比如100,用Math.sqrt(100)=10.0)返回的结果小数点后只有1位,而Math.sqrt(3)这种数开根后就是一长串了,所以只要字符串中小数点后只有一位,那肯定就是答案


因为Math.sqrt()的结果是一个浮点数,所以我们可以用将其转为String,然后用split()方法,参数是一个正则表达式,也简单,就是"\\.",因为小数点‘.’是特殊字符,所以需要转义字符,split("\\.")的意思就是以“.”做分隔的标志,把小数点前后分隔开来返回一个String数组,我们只需要判断小数点后面的那个字符串就好


代码

import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
    public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       long  n = input.nextLong();
        System.out.println(minP(n));
    }
    public static long minP(long num){
        double n = Math.round(Math.sqrt(num));//3
        long i=2;
        if (Math.sqrt(num) == n){
相关文章
|
算法 测试技术 C++
C++算法:美丽塔O(n)解法单调栈
C++算法:美丽塔O(n)解法单调栈
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
|
10月前
|
存储 Java 索引
第十四届蓝桥杯集训——数组(一维)
第十四届蓝桥杯集训——数组(一维)
99 0
|
10月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 回文数(不要小看回文数)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 回文数(不要小看回文数)
57 0
|
10月前
|
机器学习/深度学习
蓝桥杯-2/14天-完全平方数【另类思路】
蓝桥杯-2/14天-完全平方数【另类思路】
|
算法
《蓝桥杯每日一题》二分·AcWing 1460. 我在哪?
《蓝桥杯每日一题》二分·AcWing 1460. 我在哪?
79 0
|
机器学习/深度学习 存储 容器
AcWing - 蓝桥杯集训每日一题(DAY 6——DAY 10)
一个二叉树,树中每个节点的权值互不相同。 现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。
AcWing - 蓝桥杯集训每日一题(DAY 6——DAY 10)
|
算法 C++
acwing蓝桥杯 - 数学知识【上】
acwing蓝桥杯 - 数学知识【上】
115 0
|
算法 决策智能
acwing蓝桥杯 - 数学知识【下】
acwing蓝桥杯 - 数学知识【下】
129 0
|
机器学习/深度学习 存储 测试技术
蓝桥杯冲刺-倒数第八天-省赛题
蓝桥杯冲刺-倒数第八天-省赛题
154 0

相关实验场景

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等