关于爱奇艺第三题

Java中如何判断一个整数的平方根还是整数啊?

我用的这个:
(Math.sqrt(2)*(Math.sqrt(2)) == 2)  //return false;
(Math.sqrt(14)*(Math.sqrt(14)) == 14)//return true;

直接导致只AC了20%。
好累,  脑子突然短路了
全部评论
我用的temp= Math.sqrt(a*b); if(temp==(int)temp ) 过了60
点赞 回复
分享
发布于 2017-09-10 21:04
平方和公式展开对1取余数
点赞 回复
分享
发布于 2017-09-10 21:06
联想
校招火热招聘中
官网直投
floor或者int还是等于原数
点赞 回复
分享
发布于 2017-09-10 21:03
(Math.abs((int) Math.round(a-a1) < 0.0000001
点赞 回复
分享
发布于 2017-09-10 21:04
现在做出来了 ,, 真的是脑子短路的厉害。 package 爱奇艺0910; import java.util.Arrays; import java.util.Scanner; public class Demo3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ int n = sc.nextInt(); int m = sc.nextInt(); System.out.println(fun(n,m)); } } private static int fun(int n, int m) { int[][] dp = new int[n+1][m+1]; dp[1][1] = 1; //第一行 for (int i = 1; i < dp.length; i++) { if((Math.sqrt(i)*(Math.sqrt(i)) == i)){//是整数 dp[i][1] = dp[i-1][1]+1; }else{ dp[i][1] = dp[i-1][1]; } } //第一列 for (int i = 1; i < dp[0].length; i++) { if((Math.sqrt(i)*(Math.sqrt(i)) == i)){//是整数 dp[1][i] = dp[1][i-1]+1; }else{ dp[1][i] = dp[1][i-1]; } } //dp[i][j] = dp[i-1][j]+{i、1~j 中符号条件的个数} for (int i = 2; i < dp.length; i++) { for (int j = 2; j < dp[0].length; j++) { int count = 0; for (int k = 1; k <= j; k++) { if(sqrt(i*k)*sqrt(i*k) == i*k){ count++; } } dp[i][j] = dp[i-1][j]+count; count = 0; } } for (int i = 0; i < dp.length; i++) { System.out.println(Arrays.toString(dp[i])); } return dp[n][m]; } public static int sqrt(int x) { if(x<=1) { return x; } int begin = 1; int end = x; int middle = 0; while(begin<=end) { middle = begin + (end - begin)/2; //不要写成middle*middle==x,会溢出 if(middle==x/middle) { return middle; } else { if (middle<x/middle) { begin = middle + 1; } else { end = middle - 1; } } } //结束条件end一定<begin,所以返回end return end; } }
点赞 回复
分享
发布于 2017-09-10 21:06

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务