7-21 求特殊方程的正整数解


题目描述:

本题要求对任意给定的正整数N,求方程X?2??+Y?2??=N的全部正整数解。

输入格式:

输入在一行中给出正整数N(≤10000)。

输出格式:

输出方程X?2??+Y?2??=N的全部正整数解,其中XY。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution

输入样例1:

884

输出样例1:

10 28
20 22

输入样例2:

11

输出样例2:

No Solution

参考代码:

#include
#include
int main()
{
    int x,y;
    int flag=0;
    int n;
    scanf("%d",&n);
    for(x=1;x<=100;x++)
    {
        for(y=1;y<=100;y++)
        {
            if((x*x+y*y==n)&&(x<=y))
            {
                printf("%d %d\n",x,y);
                ++flag; //利用计数解决输出“NO Solution”问题
            }
        }
    }
    if(flag==0)
    {
        printf("No Solution");
    }
return 0;
}
 

相关