问题标题: 酷町堂:好久没上问答了,问个问题,4978 勾股定理

0
0
已解决
王子健
王子健
初级天翼
初级天翼

4978   勾股定理    经验值:800

题目描述 Description

所谓勾股数,是指满足形如x*x+y*y=z*z这样的(x,y,z)称为一组勾股数。

找出N(包括N)以内的勾股数。如果找不到,则输出No

输入描述 Input Description

一行:一个整数n,(0<n<10000)

输出描述 Output Description

若干行:每行一组勾股数。按第一个数从小到大输出,第一个相同则按第二数第小到大输出。

样例输入 Sample Input

5

样例输出 Sample Output

3 4 5

 

 

以上是题目,下面是我的错误代码:

#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    int n;
    cin >> n;
    for (int i=1; i<=n; i++) {
        for (int j=1; j<=n; j++) {
            for (int k=1; k<=n; k++) {
                if (i*i + j*j == k*k) {
                    cout << i << ' ' << j << ' ' << k << endl;
                }
            }
        }
    }
    return 0;
}

我认为这题并不难,但是输出会重复,比如说:3 4 5和4 3 5

望大佬改错,谢谢


0
已采纳
张睿杰
张睿杰
高级守护
高级守护

把j的起始位置改成i,把k的起始位置改为j就可以了

0
董子墨
董子墨
中级天翼
中级天翼

j从i开始就不会重复了

0
董宇昊
董宇昊
初级启示者
初级启示者

把j=1改成j=i;

把k=1改成k=j;

AC~~~~~

0
我要回答