题目
要求对任意给定的正整数N,求方程 X 2 + Y 2 = N X^2+Y^2=N X2+Y2=N 的全部正整数解。
输入格式
输入在一行中给出正整数 N ( ≤ 10000 ) N(≤10000) N(≤10000)。
输出格式
输出方程 X 2 + Y 2 = N X^2+Y^2=N X2+Y2=N 的全部正整数解,其中 X ≤ Y X≤Y X≤Y。每组解占 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 X≤Y 是否成立,如果成立就直接输出,且标识变量自增;最后 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;
}