(注意1 1不是答案)
1.题目如下:
所谓缘分数是指这样一对正整数 a 和 b,其中 a 和它的小弟 a−1 的立方差正好是另一个整数 c 的平方,而 c 正好是 b 和它的小弟 b−1 的平方和。例如
8^3 −7^3 =169=13^2 ,而 13=3^2 +2^2,
于是 8 和 3 就是一对缘分数。
给定 a 所在的区间 [m,n],是否存在缘分数?
输入格式:
输入给出区间的两个端点 0<m<n≤25000,其间以空格分隔。
输出格式:
按照 a 从小到大的顺序,每行输出一对缘分数,数字间以空格分隔。如果无解,则输出 No Solution。
输入样例 1:
8 200
输出样例 1:
8 3
105 10
输入样例 2:
9 100
输出样例 2:
No Solution
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.代码如下:
package pat_1103;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import static java.lang.Math.*;
public class Practice1103 {
public static void main(String[] args) {
BufferedReader bf1=new BufferedReader(new InputStreamReader(System.in));
try {
String str1=bf1.readLine();
int N=Integer.parseInt(str1.split(" ")[0]);
int M=Integer.parseInt(str1.split(" ")[1]);
int i=N;
int isHave=0;
while(i<=M) {
double temp=pow(i,3)-pow(i-1,3);
double temp1=sqrt(temp);
int temp2=(int)(temp1);
if(temp2==temp1){
if(getNum(temp2)!=0) {
isHave=1;
System.out.println(i+" "+getNum(temp2));
}
}
i++;
}
if(isHave==0) {
System.out.println("No Solution");
}
}catch(Exception ex) {
ex.printStackTrace();
}
}
static int getNum(int n) {
int i=2;
while(i<=n) {
if((int)pow(i,2)+(int)pow(i-1,2)==n) {
return i;
}
i++;
}
return 0;
}
}