51Nod_1080 两个数的平方和
http://www.51nod.com/Challenge/Problem.html#!#problemId=1080
题目
给出一个整数N,将N表示为2个整数i与j的平方之和(i <= j),如果有多种表示,按照i的递增序输出。例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2(注:3^2 + 11^2同11^2 + 3^2算1种)
输入
一个数N(1 <= N <= 10^9)
输出
共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i <= j)。如果无法分解为2个数的平方和,则输出No Solution
样例输入
130
样例输出
3 11
7 9
分析
枚举即可
C语言程序
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,end,flag=0;
scanf("%d",&n);
end=sqrt(n);
for(i=0;i<=end;i++){
int temp=sqrt(n-i*i);
if(temp*temp==n-i*i&&i<=temp)
printf("%d %d\n",i,temp),flag=1;
}
if(!flag)
printf("No Solution\n");
return 0;
}