PAT(乙级)2019年秋季考试 7-3 缘分数 (20分)
7-3 缘分数 (20分)
所谓缘分数是指这样一对正整数 a 和 b,其中 a 和它的小弟 a−1 的立方差正好是另一个整数 c 的平方,而 c 正好是 b 和它的小弟 b−1 的平方和。例如 7,而 1,于是 8 和 3 就是一对缘分数。
给定 a 所在的区间 [,是否存在缘分数?
输入格式:
输入给出区间的两个端点 0,其间以空格分隔。
输出格式:
按照 a 从小到大的顺序,每行输出一对缘分数,数字间以空格分隔。如果无解,则输出 No Solution。
输入样例 1:
8 200
输出样例 1:
8 3
105 10
输入样例 2:
9 100
输出样例 2:
No Solution
代码讲解:按题模拟即可。。。
#include<stdio.h> #include<math.h> int check(long long a) //验证完全平方数函数 { long long n=sqrt(a); if(n*n!=a) return 0; else return n; } long long lic(long long n) { return n*n*n; } int main() { long long a,b,c,d; int i,count=0; int n,m; scanf("%d %d",&n,&m); if(n==1) n+=1; for(i=n;i<=m;i++) { a=lic(i); b=lic(i-1); c=check(a-b); if(c!=0&&(d=check(2*c-1))&&d%2==1) //保证c必须是一个完全平方数。。。因为最后公式结果最后加1除二,所以必须是奇数才可以。。 { printf("%d %d\n",i,(d+1)/2); count++; } } if(count==0) { printf("No Solution\n"); } return 0; }

浙公网安备 33010602011771号