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;
    } 
    
    运行正常
  • 相关阅读:
    Linux基础命令mv
    Linux基础命令cp
    闭包函数
    函数的嵌套
    函数对象
    global与nonlocal
    名称空间与作用域
    函数的参数(总结)
    函数的基本使用
    文件的操作之指针移动
  • 原文地址:https://www.cnblogs.com/pythonbigdata/p/8540351.html
Copyright © 2011-2022 走看看