蓝桥杯-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){
相关文章
|
2月前
每日一题(珠玑妙算,两数之和)
每日一题(珠玑妙算,两数之和)
21 1
|
10月前
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
|
5月前
|
机器学习/深度学习
蓝桥杯-2/14天-完全平方数【另类思路】
蓝桥杯-2/14天-完全平方数【另类思路】
|
6月前
|
算法
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
26 0
|
9月前
|
算法
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
|
算法
每日一题冲刺大厂第十七天 逆序对
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题为了让大家练到各种各样的题目,熟悉各种题型,一年以后,蜕变成为一个不一样的自己!
228 0
|
12月前
|
算法 C++ Python
每日算法系列【LeetCode 1006】笨阶乘
每日算法系列【LeetCode 1006】笨阶乘
|
12月前
|
算法 C++
【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法
【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法
|
12月前
|
算法 C++
【每日算法Day 103】老题新做,几乎不会有人想到的解法,它来了
【每日算法Day 103】老题新做,几乎不会有人想到的解法,它来了
|
算法 JavaScript 前端开发
日拱算法:解两道“杨辉三角”题
什么是“杨辉三角”,想必大家并不陌生~~ 在「杨辉三角」中,每个数是它左上方和右上方的数的和。