编程题 7-21 求特殊方程的正整数解【PAT】

编程练习题目集目录

题目

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

输入格式

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

输出格式

  输出方程 X 2 + Y 2 = N X^2+Y^2=N X2+Y2=N 的全部正整数解,其中 X ≤ Y X≤Y XY。每组解占 1 1 1 行,两数字间以 1 1 1 空格分隔,按 X X X 的递增顺序输出。如果没有解,则输出 N o S o l u t i o n No Solution NoSolution

输入样例

884

输出样例

10 28
20 22

输入样例

11

输出样例

No Solution

题解

解题思路

  先输入一个数 N N N,再创建一个标志是否有符合的标识变量并初始化为 0 0 0,然后利用两层 f o r for for 循环,先判断两个数字的平方的和是否等于 N N N,然后再判断 X ≤ Y X≤Y XY 是否成立,如果成立就直接输出,且标识变量自增;最后 f o r for for 循环完毕,判断标识变量是否为 0 0 0,如果为 0 0 0 说明没有满足条件的两个数字,输出 " N o S o l u t i o n " "No Solution" "NoSolution" 即可。

完整代码

#include<iostream>
using namespace std;

int main(void)
{
    
    
    int x, y, N, flag = 1;
    cout << "请输入一正个整数:";             // 提交时注释此行
    cin >> N;
    for (x = 1; x <= 100; x++)
    {
    
    
        for (y = 1; y <= 100; y++)
            if (x*x + y * y == N)
                if (x < y || x == y)
                {
    
    
                    flag = 0;
                    cout << x << " " << y << endl;
                }
    }
    if (flag)
        cout << "No Solution" << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41918107/article/details/143138302