给出一个整数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种)
Input
一个数N(1 <= N <= 10^9)
Output
共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i <= j)。 如果无法分解为2个数的平方和,则输出No Solution
Input示例
130
Output示例
3 11 7 9
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin>>n;
int flag=1; //标记是否存在这样的数
int m=sqrt(n+0.5);
for(int i=0;i<=m;i++)
{
int j=sqrt(n-i*i);
if(i*i+j*j==n&&j>=i)
{
cout<<i<<" "<<j<<endl;
flag=0;
}
}
if(flag)
cout<<"No Solution"<<endl;
}