# 方程整数解

**题目描述**

方程: a^2 + b^2 + c^2 = 1000  
这个方程有正整数解吗？有：a,b,c=6,8,30 就是一组解。   
求出 a^2 + b^2 + c^2 = n(1<=n<=10000)的所有解，解要保证c>=b>=a>=1。

**输入**

存在多组测试数据，每组测试数据一行包含一个正整数n(1<=n<=10000)

**输出**

如果无解则输出"No Solution"。  
如果存在多解，每组解输出1行，输出格式：a b c，以一个空格分隔  
按照a从小到大的顺序输出，如果a相同则按照b从小到大的顺序输出，如果a,b都相同则按照c从小到大的顺序输出。

**样例输入**

```
4
1000
```
**样例输出**

```
No Solution
6 8 30
10 18 24
```

## aop

### before

```cpp
#include <iostream>
#include <cmath>
using namespace std;
```
### after

```cpp

```

## 答案

```cpp
int main()
{
    int n;
    bool flag = false;
    while (cin >> n)
    {
        flag = false;
        for (int i = 1; i <= sqrt(n); i++)
        {
            for (int j = i; j <= sqrt(n); j++)
            {
                for (int k = j; k <= sqrt(n); k++)
                {
                    if (i * i + j * j + k * k == n)
                    {
                        cout << i << ' ' << j << ' ' << k << endl;
                        flag = true;
                    }
                    else if (i * i + j * j + k * k > n)
                        break;
                }
            }
        }
        if (!flag)
            cout << "No Solution" << endl;
    }

    return 0;
}

```
## 选项


### A

```cpp
int main()
{
    int n;
    bool flag = false;
    while (cin >> n)
    {
        flag = false;
        for (int i = 1; i <= n; i++)
        {
            for (int j = i; j <= n; j++)
            {
                for (int k = j; k <= n; k++)
                {
                    if (i * i + j * j + k * k == n)
                    {
                        cout << i << ' ' << j << ' ' << k << endl;
                        flag = true;
                    }
                    else if (i * i + j * j + k * k > n)
                        break;
                }
            }
        }
        if (!flag)
            cout << "No Solution" << endl;
    }

    return 0;
}
```

### B

```cpp
int main()
{
    int n;
    bool flag = false;
    while (cin >> n)
    {
        flag = false;
        for (int i = 1; i < sqrt(n); i++)
        {
            for (int j = 1; j < sqrt(n); j++)
            {
                for (int k = 1; k < sqrt(n); k++)
                {
                    if (i * i + j * j + k * k == n)
                    {
                        cout << i << ' ' << j << ' ' << k << endl;
                        flag = true;
                    }
                    else if (i * i + j * j + k * k > n)
                        break;
                }
            }
        }
        if (!flag)
            cout << "No Solution" << endl;
    }

    return 0;
}
```

### C

```cpp
int main()
{
    int n;
    bool flag = false;
    while (cin >> n)
    {
        flag = false;
        for (int i = 1; i <= sqrt(n); i++)
        {
            for (int j = 1; j <= sqrt(n); j++)
            {
                for (int k = j; k <= sqrt(n); k++)
                {
                    if (i * i + j * j + k * k == n)
                    {
                        cout << i << ' ' << j << ' ' << k << endl;
                        flag = true;
                    }
                    else if (i * i + j * j + k * k > n)
                        break;
                }
            }
        }
        if (!flag)
            cout << "No Solution" << endl;
    }

    return 0;
}
```
