xtu oj 1520 方程组

发布时间:2024年01月12日

题目描述

,其中x≤y?的整数解。

输入格式

第一行是一个整数T?(1≤T≤1000),表示样例的个数。 第二行是两个整数n,?n∈[?109,109]和m,?m∈[0,109]。

输出格式

依次输出一个样例的结果。 输出一行,为两个整数,之间用一个空格隔开;如果不存在解,输出”0”。

样例输入

3
1 1
2 2
1 0

样例输出

0 1
1 1
0

AC代码

#include<stdio.h>
#include<math.h>
//判断是否是平方数 
int Judge(int n){
	int flag=0;
    int i=sqrt(n);
	if(i*i==n){
		flag=1;
	} 
	return flag;
}
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        int n,m,x,y,flag=1;
        scanf("%d%d",&n,&m);
        int t=(int)sqrt(m);
        for(x=-t;x<=t;x++){//注意x的范围 
            if(Judge(m-x*x)){
            	int y=sqrt(m-x*x);
            	if(x*x*x+y*y*y==n){
            		printf("%d %d\n",x,y);
            		flag=0;
            		break;
				}
				if(x*x*x-y*y*y==n){//负数的情况 
            		printf("%d %d\n",x,-y);
            		flag=0;
            		break;
				}
			}
        }
        if(flag)printf("0\n");
    }
}

解题思路:t=sqrt(m),x的范围从-t到t,判断m-x*x是否为平方数,若是,代入立方式验证结果,注意考虑y为负数的情况。

文章来源:https://blog.csdn.net/m0_75005390/article/details/135550036
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。