【MAC 上学习 C++】Day 66-4. 7-21 求特殊方程的正整数解 (15 分)

7-21 求特殊方程的正整数解 (15 分)

1. 题目摘自

https://pintia.cn/problem-sets/14/problems/801

2. 题目内容

本题要求对任意给定的正整数N,求方程 X2 + Y2 = N 的全部正整数解。

输入格式:

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

输出格式:

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

输入样例1:

884

输出样例1:

10 28
20 22

输入样例2:

11

输出样例2:

No Solution

3. 源码参考
#include 
#include 

using namespace std;

int main()
{
  int n, k;
  float y;
  int i, j;
  int f;

  cin >> n;
  k = sqrt(n / 2);
  if(k > (int)k)
  {
    k += 1;
  }
  
  f = 0;
  for(i = 1; i < k; i++)
  {
    y = sqrt(n - (i * i));
    if(y == (int)y)
    {
      f = 1;
      cout << i << " " << y << endl;
    }
  }

  if(f == 0)
  {
    cout << "No Solution" << endl;
  }

  return 0;
}

你可能感兴趣的:(【MAC 上学习 C++】Day 66-4. 7-21 求特殊方程的正整数解 (15 分))