精华内容
下载资源
问答
  • 因篇幅问题,源文件里有详细功能说明,以及源代码文件
  • 题目: 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 ...

    题目:

    四平方和定理,又称为拉格朗日定理:
    每个正整数都可以表示为至多4个正整数的平方和。
    如果把0包括进去,就正好可以表示为4个数的平方和。

    比如:
    5 = 0^2 + 0^2 + 1^2 + 2^2
    7 = 1^2 + 1^2 + 1^2 + 2^2
    (^符号表示乘方的意思)

    对于一个给定的正整数,可能存在多种平方和的表示法。
    要求你对4个数排序:
    0 <= a <= b <= c <= d
    并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法

    程序输入为一个正整数N (N<5000000)
    要求输出4个非负整数,按从小到大排序,中间用空格分开

    例如,输入: 5
    则程序应该输出: 0 0 1 2

    再例如,输入: 12
    则程序应该输出: 0 2 2 2

    再例如,输入: 773535
    则程序应该输出: 1 1 267 838

    代码实现:

    #菜鸡代码大的跑不出来¥%#%……##¥%
    n=int(input())
    for i in range(n):
        for j in range(n):
            for k in range(n):
                for l in range(n):
                    if i*i+j*j+k*k+l*l==n:
                        s=[i,j,k,l]
    s.sort()
    print(s[0],s[1],s[2],s[3])
    
    展开全文
  • 题目描述 四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 22...

    题目描述
    四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。
    如果把0包括进去,就正好可以表示为4个数的平方和。
    比如:
    5 = 0^2 + 0^2 + 1^2 + 2^2
    7 = 1^2 + 1^2 + 1^2 + 2^ 2(^符号表示乘方的意思)
    对于一个给定的正整数N,可能存在多种平方和的表示法。
    要求你对4个数排序:0 <= a <= b <= c <= d
    并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法
    输入
    输入存在多组测试数据,每组测试数据输入一行为一个正整数N (N<5000000)
    输出
    对于每组测试数据,要求输出4个非负整数,按从小到大排序,中间用空格分开
    样例输入 Copy
    5
    12
    773535
    样例输出 Copy
    0 0 1 2
    0 2 2 2
    1 1 267 838

    注意点:
    这题在调用sqrt()函数时要进行强制转换,因为题目要求的四个数都是正整数,如果不进行强制转换,返回的数可能是小数,就不符合要求了,如果你不知道为什么返回的是小数,请点这里:
    sqrt()函数的注意事项

    代码如下:

    #include <iostream>
    #include <cmath>
    using namespace std;
    bool flag;
    int s;
    
    int main() {
    	while (cin >> s) {
    		flag = false;
    		for (int a = 0; a * a < s; a++) {
    			for (int b = a; b * b + a * a < s; b++) {
    				for (int c = b; c * c + b * b + a * a < s; c++) {
    					if (pow((int)sqrt(s - a * a - b * b - c * c), 2) == s - a * a - b * b - c * c) {
    						cout << a << " " << b << " " << c << " " << (int)sqrt(s - a * a - b * b - c * c) << endl;
    						flag = true;
    					}
    					if (flag)
    						break;
    				}
    				if (flag)
    					break;
    			}
    			if (flag)
    				break;
    		}
    	}
    	return 0;
    }
    
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int main()
    {
    	int n;
    	while(cin>>n)
    	{
    		bool flag = false;
    		for (int a = 0;a*a<=n;a++)
    		{
    			for (int b = a;a*a+b*b<=n;b++)
    			{
    				for (int c = b;c*c+b*b+a*a<=n;c++)
    				{
    					double d = sqrt(n-a*a-b*b-c*c);
    					if (d==int(d))//如果第4个数是整数,说明符合题意
    					{
    						cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
    						flag = true;
    					}
    					if (flag) break;
    				}
    				if (flag) break;
    			}
    			if (flag) break;
    		}
    	}
    	return 0;
    }
    
    
    
    展开全文
  • 四平方和

    2021-03-14 21:35:33
    暴力、枚举

    四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。
    如果把0包括进去,就正好可以表示为4个数的平方和。
    比如:
    5 = 0^2 + 0^2 + 1^2 + 2^2
    7 = 1^2 + 1^2 + 1^2 + 22(符号表示乘方的意思)
    对于一个给定的正整数N,可能存在多种平方和的表示法。
    要求你对4个数排序:0 <= a <= b <= c <= d
    并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法
    输入
    输入存在多组测试数据,每组测试数据输入一行为一个正整数N (N<5000000)
    输出
    对于每组测试数据,要求输出4个非负整数,按从小到大排序,中间用空格分开
    样例输入 Copy
    5
    12
    773535
    样例输出 Copy
    0 0 1 2
    0 2 2 2
    1 1 267 838

    思路:本来的思路就是暴力枚举,四重循环得出所有结果,意料之中没有通过。

    其实思路是正确的,不过需要优化:将四重循环转换为三重循环

    代码如下:

    #include<iostream>
    #include<cmath>
    using namespace std;
    int main()
    {
    	int num;
    	double i4, max;
    	while (cin >> num)
    	{
    		int flag = 0;
    		max = sqrt(num);
    		for (int i1 = 0; i1 <= max; i1++)
    		{
    			for (int i2 = 0; i2 <= max; i2++)
    			{
    				for (int i3 = 0; i3 <= max; i3++)
    				{
    					i4 = sqrt(num - i1 * i1 - i2 * i2 - i3 * i3);
    					if (i4 == (int)i4)
    					{
    						flag = 1;
    						cout << i1 << " " << i2 << " " << i3 << " " << i4 << endl;
    						break;
    					}
    				}
    				if (flag == 1)break;
    			}
    			if (flag == 1)break;
    		}
    	}
    	return 0;
    }
    
    展开全文
  • 蓝桥杯 四平方和

    2020-04-20 16:07:55
    蓝桥杯 2016 四平方和 四的平方和 四平方和定理4,又称为拉格朗日定理 每个正整数都可以表示为至少4个正整数的平方和 如果把0包括进去,就正好可以表示为4个数的平方和 比如: 5=0^2+0^2+1^2+2^2; 7=1^2+1^2+1^2+2^2...

    蓝桥杯 2016 四平方和

    四的平方和
    四平方和定理4,又称为拉格朗日定理
    每个正整数都可以表示为至少4个正整数的平方和
    如果把0包括进去,就正好可以表示为4个数的平方和

     比如:
     5=0^2+0^2+1^2+2^2;
     7=1^2+1^2+1^2+2^2;
    ^表示乘方的意思
     
     对于一个给定的正整数,可能存在多种平方和的表示法
     要求你对4个数排序
     0<=a<=b<=c<=d
     并对所有主键进行升序排列,最后输出第种表示法
     
     
     例如
     输入
     5
     0 0 1 2
     
     
     12
     0 2 2 2
     
     
     773535
     1 1 267 838
    

    用时3秒

    static int n;
    	static Map<Integer,Integer> mp=new HashMap<Integer,Integer>();
    	//用牺牲空间来换取时间
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner sc=new Scanner(System.in);
    		n=sc.nextInt();
    		
    		//用枚举法来暴力破解
    		for(int c=0;c*c<=n/2;c++){ //先将所有的可能都找到,
    										//为啥要n的一半所有数的根号数都小于该数的一半
    			for(int d=c;d*d+c*c<=n;d++){	//因为0也包括在内,所以不用顾忌0
    				if(mp.get(c*c+d*d)==null){
    					mp.put(d*d+c*c, c);
    				}
    			}
    		}
    		
    		for(int a=0;a<=n/4;a++){
    			for(int b=a;a*a+b*b<=n/2;b++){  //用于判断该数是否存在
    				if(mp.get(n-a*a-b*b)!=null){
    					int c=mp.get(n-a*a-b*b);
    					int d=(int) Math.sqrt(n-a*a-b*b-c*c);
    					System.out.println(a+" "+b+" "+c+" "+d);
    					return;
    					
    				}
    			}
    		}
    		
    	}
    

    分析用枚举和优化的知识来暴力求解

    展开全文
  • **思路:**枚举a,b,c,然后用n减去aa+bb+c*c得到d,可以省去一次循环 代码: # include<iostream> # include<cmath> using namespace std; void spf(int n) { for(int i = 0;... for(int ..
  • 八、题目:四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。 比如: 5 = 0^ 2 + 0^ 2 + 1^ 2 + 2^2 7 = 1^ 2 + 1^ 2...
  • 题目: 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 ...
  • JAVA语言 C组题解_题9 四平方和题目解题思路 题目 四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。...
  • public class 四平方和 { private static void f1(int n) { // long tmp = (long) Math.sqrt(n); for (int a = 0; a * a ; a++) { for (int b = a; b * b + a * a ; b++) { for (int c = b; c * c + b...
  • 题目链接:四平方和 这题有两种解法:1、暴力(但是容易被卡掉);2、二分 解题思路:1、暴力就是枚举a,b,c的值,然后求出d值,判断是否合法,合法就输出;2、预处理出两个数的平方和,然后再枚举两个数,就可以...
  • Java四平方和

    2020-06-19 19:08:04
    【题目】 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 ...
  • #acwing四平方和

    2020-07-29 22:01:06
    acwing四平方和 题目 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多 4 个正整数的平方和。 如果把 0 包括进去,就正好可以表示为 4 个数的平方和。 比如: 5=02+02+12+22 7=12+12+12+22 对于一个...
  • 四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号...
  • 四平方和Java_B

    2021-04-06 16:20:17
    四平方和 题目描述 思路 题目描述 四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + ...
  • 【问题描述】 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多 4 个正整数的平方和。 如果把 0 包括进去,就正好可以表示为 4 个数的平方和。 比如: 5 = 0^2 + 0^2 +1^2 + 2^2 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 594
精华内容 237
关键字:

四平方和