PAT(乙级)2019年秋季考试 7-3 缘分数 (20分)

7-3 缘分数 (20分)
 

所谓缘分数是指这样一对正整数 a 和 b,其中 a 和它的小弟 a1 的立方差正好是另一个整数 c 的平方,而 c 正好是 b 和它的小弟 b1 的平方和。例如 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;
}

 

 
posted @ 2020-12-02 21:38  罪梦者  阅读(241)  评论(0)    收藏  举报