求大神 给个优化,该如何解决
求大神 给个优化
题目是:
给定整数区间[A,B]问其中有多少个完全平方数。
输入格式:
多组数据,包含两个正整数A,B 1<=A<=B<=2000000000。
输出格式:
每组数据输出一行包含一个整数,表示闭区间[A,B]中包含的完全平方数的个数。
我的代码是:
import java.util.Scanner;
public class testSq{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
if(a>b){
a=a+b;
b=a-b;
a=a-b;
}
if(b > 2000000000){
System.out.println("超过2000000000");
}else{
int count =0;
for(int i=a;i<=b;i++){
if(Math.sqrt(i)%1==0){
count++;
}
}
System.out.println(count);
}
}
}
问题是:这种写法耗内存?速度慢?求大神给点指导。
------解决思路----------------------
对 A,B 取平方根,取整,减法。
------解决思路----------------------
对a和b进行 平方根,然后取整相减就是你需要的个数,(注意a本身平方根的时候需要+1)如果要数值在平方就好了啊
穷举你累不累啊
题目是:
给定整数区间[A,B]问其中有多少个完全平方数。
输入格式:
多组数据,包含两个正整数A,B 1<=A<=B<=2000000000。
输出格式:
每组数据输出一行包含一个整数,表示闭区间[A,B]中包含的完全平方数的个数。
我的代码是:
import java.util.Scanner;
public class testSq{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
if(a>b){
a=a+b;
b=a-b;
a=a-b;
}
if(b > 2000000000){
System.out.println("超过2000000000");
}else{
int count =0;
for(int i=a;i<=b;i++){
if(Math.sqrt(i)%1==0){
count++;
}
}
System.out.println(count);
}
}
}
问题是:这种写法耗内存?速度慢?求大神给点指导。
------解决思路----------------------
对 A,B 取平方根,取整,减法。
------解决思路----------------------
对a和b进行 平方根,然后取整相减就是你需要的个数,(注意a本身平方根的时候需要+1)如果要数值在平方就好了啊
穷举你累不累啊