#include<stdio.h>
int main()
{
int N;
scanf("%d",&N);
int X,Y,flag=0;
for(X=1; X<=100; X++)
{
for(Y=X; Y<=100; Y++)
{
if(X*X+Y*Y==N)
{
printf("%d %d\n",X,Y);
flag++;
}
}
}
if(flag==0)
{
printf("No Solution");
}
return 0;
}
本题中,有以下需要注意的点:
1.循环的边界值设定,这里给的是100,因为100*100=10000,而题目中说N的范围,可以根据这个做个简单的计算
2.按照x的顺序进行递增解的输出,可以让X做外层循环,这样X的变化就是从小到大了,同时注意题目规定的Y>=X,所以在循环中,我使Y的初值为X.
3,这里无解的情况,我设置一个变量,通过变量的值来判断,是否有解,flag==0表示它没有满足要求的解。