题目:
时间限制: 2.0s 内存限制: 512.0MB 本题总分:25 分
问题描述
一个整数 a 是一个完全平方数,是指它是某一个整数的平方,即存在一个整数 b ,使得 a = b^2 。
给定一个正整数 n ,请找到最小的正整数 x ,使得它们的乘积是一个完全平方数。
输入格式
输入一行包含一个正整数 n 。
输出格式
输出找到的最小的正整数 x 。
测试样例1
Input:
12
Output:
3
测试样例2
Input:
15
Output:
15
评测用例规模与约定
对于 30% 的评测用例,1 ≤ n ≤ 1000 ,答案不超过 1000 10001000。
对于 60% 的评测用例,1 ≤ n ≤ 10^8 ,答案不超过 10^8。
对于所有评测用例,1 ≤ n ≤ 1 0^12 ,答案不超过 10^12。
分析:
给定一个数字要求从一开始它的乘积是不是完全平方数,那么就需要判断sqrt后的数字是不是?.0的格式,这个格式的标准就是
1总长度减去.前面的数量-1等于1
2获取.后面的数字是不是0
如果这两项都满足,那么就是完全平方数字。
步骤:
package 第十二届省赛第二套;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
//2 4 6 10 20
public class 测试 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 1;; i++) {
String valueOf = String.valueOf(Math.sqrt(n * i));
int indexOf = valueOf.indexOf(".");
int v = Integer.parseInt(String.valueOf(valueOf.charAt(indexOf + 1)));
if (valueOf.length() - indexOf - 1 == 1 && v == 0) {
System.out.println(i);
break;
}
}
}
}