solution.md 1.7 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1
# 方程整数解
F
fix bug  
feilong 已提交
2

3
**题目描述**
F
fix bug  
feilong 已提交
4

每日一练社区's avatar
每日一练社区 已提交
5 6 7 8
方程: 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。

9
**输入**
F
fix bug  
feilong 已提交
10

每日一练社区's avatar
每日一练社区 已提交
11
存在多组测试数据,每组测试数据一行包含一个正整数n(1<=n<=10000)
12 13

**输出**
F
fix bug  
feilong 已提交
14

每日一练社区's avatar
每日一练社区 已提交
15 16 17
如果无解则输出"No Solution"。  
如果存在多解,每组解输出1行,输出格式:a b c,以一个空格分隔  
按照a从小到大的顺序输出,如果a相同则按照b从小到大的顺序输出,如果a,b都相同则按照c从小到大的顺序输出。
18 19

**样例输入**
F
fix bug  
feilong 已提交
20

每日一练社区's avatar
每日一练社区 已提交
21 22 23
```
1000
```
24
**样例输出**
F
fix bug  
feilong 已提交
25

每日一练社区's avatar
每日一练社区 已提交
26 27 28 29 30
```
6 8 30
10 18 24
```

每日一练社区's avatar
每日一练社区 已提交
31
以下程序可以实现该功能,请你计算该程序的算法复杂度:
F
fix bug  
feilong 已提交
32

每日一练社区's avatar
每日一练社区 已提交
33
```cpp
每日一练社区's avatar
每日一练社区 已提交
34
#include <bits/stdc++.h>
每日一练社区's avatar
每日一练社区 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
using namespace std;

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;
}
每日一练社区's avatar
每日一练社区 已提交
66 67 68 69 70 71 72 73 74
```

## aop

### before

```cpp

```
每日一练社区's avatar
每日一练社区 已提交
75

每日一练社区's avatar
每日一练社区 已提交
76 77 78
### after

```cpp
每日一练社区's avatar
每日一练社区 已提交
79

每日一练社区's avatar
每日一练社区 已提交
80 81 82 83 84 85
```

## 答案

```cpp
O(n^1.5)
每日一练社区's avatar
每日一练社区 已提交
86 87 88
```
## 选项

F
fix bug  
feilong 已提交
89

每日一练社区's avatar
每日一练社区 已提交
90
### A
F
fix bug  
feilong 已提交
91

每日一练社区's avatar
每日一练社区 已提交
92
```cpp
每日一练社区's avatar
每日一练社区 已提交
93
O(n^3)
每日一练社区's avatar
每日一练社区 已提交
94 95 96
```

### B
F
fix bug  
feilong 已提交
97

每日一练社区's avatar
每日一练社区 已提交
98
```cpp
每日一练社区's avatar
每日一练社区 已提交
99
O(n^2)
每日一练社区's avatar
每日一练社区 已提交
100 101 102
```

### C
F
fix bug  
feilong 已提交
103

每日一练社区's avatar
每日一练社区 已提交
104
```cpp
每日一练社区's avatar
每日一练社区 已提交
105
O(n^2.5)
每日一练社区's avatar
每日一练社区 已提交
106
```