问题标题: 酷町堂:4978

0
0
已解决
武建豪
武建豪
中级天翼
中级天翼

4978 勾股定理经验值:1200 时间限制:1000毫秒

题目描述 Description

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

 

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

 

输入描述 Input Description

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

 

输出描述 Output Description

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

 

样例输入 Sample Input

5

样例输出 Sample Output

3 4 5

TLE 50

为什么啊。。。

减少for循环的次数,构造k,10分

#include<iostream>

#include<fstream>

#include<algorithm>

#include<cmath>

#include<cstdio>

#include<cstring>

#include<string>

#include<iomanip>

#include<cstdlib>

#include<vector>

using namespace std;

int n;

int main(){

    cin>>n;

    for(int i=1;i<=n;i++){

        for(int j=i+1;j<=n;j++){

            for(int k=j+1;k<=n;k++){

                if(i<=n&&j<=n&&k<=n&&i*i+j*j==k*k){

                        cout<<i<<" "<<j<<" "<<k<<endl;

                }

             }

         }

     }

    return 0;

}

武建豪在2021-05-30 13:05:01追加了内容

人呢?!?!?!?!

武建豪在2021-05-30 14:43:02追加了内容

武建豪在2021-06-02 22:32:52追加了内容

人呢?我有亿点点着急

武建豪在2021-06-04 22:11:32追加了内容

ding

武建豪在2021-06-14 22:56:15追加了内容

ding

武建豪在2021-06-15 19:19:01追加了内容
  • #include<iostream>
  • #include<fstream>
  • #include<algorithm>
  • #include<cmath>
  • #include<cstdio>
  • #include<cstring>
  • #include<string>
  • #include<iomanip>
  • #include<cstdlib>
  • #include<vector>
  • using namespace std;
  • int n;
  • int main(){
  • cin>>n;
  • for(int i=1;i<=n;i++){
  • for(int j=i+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;
  • }
  • Time Limit Exceeded:50

  • 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • 二个星期了!!!

  • 怎么没人回答啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

武建豪在2021-06-17 10:25:31追加了内容

ding

武建豪在2021-06-19 23:21:33追加了内容

ding...


0
已采纳
朱优扬
朱优扬
中级天翼
中级天翼
核心:
    循环(定义 i=1;i<=n;i++)
		循环(定义 j=i+1;j<=n;j++)
			循环(定义 k=1;k<=n;k++)
				如果(i乘i加j乘j是k乘k)
					输出<<i<<" "<<j<<" "<<k<<'\n';

 

朱优扬在2021-05-30 12:41:13追加了内容

我*,测试数据换了……

你要是早点提交就能100了……

0
0
0
汪恺恒
汪恺恒
中级启示者
中级启示者

枚举z的循环不需要

for(int x=1;x<=n;x++){
        for(int y=x+1;y<=n;y++){
            int z=x*x+y*y;//计算z
            if(pf(z)&&sqrt(z)<=n){//完全平方数且sqrt(z)<=n
                输出;
            }
        }
    }

 

0
0
我要回答