zoukankan      html  css  js  c++  java
  • 蓝桥杯--四平方和

    问题描述

    四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多四个正整数的平方和。如果把0包括进去,就正好可以表示为四个数的平方和。 
    比如: 
    5=0*0+0*0+1*1+2*2 
    7=1*1+1*1+1*1+2*2 
    则对于一个给定的正整数n,可以表示为:n = a^2 + b^2 + c^2 + d^2 
    你需要求出 字典序 最小的一组解 a,b,c,da,b,c,d。 
    输入格式 
    程序输入为一个正整数 (N<=5000000) 
    输出格式 
    输出四个非负整数 a,b,c,d中间用空格分开。 
    样例输入1 

    样例输出1 
    0 0 1 2 
    样例输入2 
    12 
    样例输出2 
    0 2 2 2

    C语言代码

    #include<stdio.h>
    #include<stdlib.h>
    using namespace std;
    int main(){
        int n;
        scanf("%d",&n);
        for(int a=0;a<2500;a++){
            for(int b=0;b<2500;b++){
                for(int c=0;c<2500;c++){
                    for(int d=0;d<2500;d++){
                        if(a*a+b*b+c*c+d*d==n){
                            printf("%d %d %d %d
    ",a,b,c,d);
                            exit(0);
                        }
                    }
                }
            }
        }
        return 0;
    } 
    
    运行超时!!!
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    using namespace std;
    int main(){
        int n,d1;
        double d;
        scanf("%d",&n);
        for(int a=0;a<=sqrt(n);a++){
            for(int b=0;b<=sqrt(n);b++){
                for(int c=0;c<=sqrt(n);c++){
                    d=n-(a*a+b*b+c*c);
                    d1=int(sqrt(d));
                    if(d==d1*d1){
                        printf("%d %d %d %d",a,b,c,d1);
                            exit(0);
                    }
                            
                    
                }
            }
        }
        return 0;
    } 
    
    运行正常
  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/pythonbigdata/p/8540351.html
Copyright © 2011-2022 走看看