import java.util.*; public class Main { //判断是否是完全平方数的方法 public static boolean isSquare(int n){ int root=(int)Math.sqrt(n); if(root*root==n){ return true; } return false; } //求算数平方根 public static int root(int n){ return (int)Math.sqrt(n); } public static void main(String[] args) { Scanner scan = new Scanner(System.in); int m= scan.nextInt(),n= scan.nextInt(); int count=0;//计数器,每找到一组解就自增,如果最后还是0说明无解 //遍历从m到n的每一个数,如果他有缘分数,就打出来 for(int i=m;i<=n;i++){ int differ=i*i*i-(i-1)*(i-1)*(i-1),c; if(isSquare(differ)) c=root(differ); else continue;//不是完全平方数就跳过 //遍历不从0开始,因为题目里说了是要正整数,所以从1开始到c的算数平方根为止,判断是否有这样的j满足条件 for(int j=2;j<=root(c);j++){ if(c==j*j+(j-1)*(j-1)){ System.out.println(i+" "+j); count++; } } } if(count==0){ System.out.println("No Solution"); } } }
这里的最后一个测试用例有点刁钻,在写的时候已经想到了1 1到底算不算缘分数,但是看了题目描述之后 1^3-(1-1)^3=(1)^2 1^2=1^2+(1-0)^2 而在题目描述中两个作为“小弟”的(1-1)并没有要求为正整数,所以1 1应该算一组缘分数。但最后一个测试点还是爆了,把遍历的起点改成2就AC了,说明题目作者并不认为1 1算是一组解。应该是题目描述不够准确
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)