网站怎么做百度地图,马鞍山广播电视台,黄山旅游攻略 知乎,违法网站做网站的人会受罚嘛原文作者#xff1a;疼疼蛇原文标题#xff1a;【蓝桥杯省赛JavaB组真题详解】四平方和(2016)发布时间#xff1a;2021-02-26 15:00:01题目描述四平方和四平方和定理#xff0c;又称为拉格朗日定理#xff1a;每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进…原文作者疼疼蛇原文标题【蓝桥杯省赛JavaB组真题详解】四平方和(2016)发布时间2021-02-26 15:00:01题目描述四平方和四平方和定理又称为拉格朗日定理每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去就正好可以表示为4个数的平方和。比如5 02 02 12 227 12 12 12 22(^符号表示乘方的意思)对于一个给定的正整数可能存在多种平方和的表示法。要求你对4个数排序0 a b c d并对所有的可能表示法按 a,b,c,d 为联合主键升序排列最后输出第一个表示法程序输入为一个正整数N (N5000000)要求输出4个非负整数按从小到大排序中间用空格分开例如输入5则程序应该输出0 0 1 2再例如输入12则程序应该输出0 2 2 2再例如输入773535则程序应该输出1 1 267 838资源约定峰值内存消耗(含虚拟机) 256MCPU消耗 3000ms请严格按要求输出不要画蛇添足地打印类似“请您输入…” 的多余内容。所有代码放在同一个源文件中调试通过后拷贝提交该源码。注意不要使用package语句。不要使用jdk1.7及以上版本的特性。注意主类的名字必须是Main否则按无效代码处理。解题思路我觉得这题最关键的地方在于联合主键升序一开始没明白也没注意结果答案就只有部分符合联合主键升序意思是abcd四个数字合起来组成的数字按升序排列例如这题输入12的话有a0、b2、c2、d2的情况也有a1、b1、c1、d3的情况第一种情况按联合主键升序的话先出现因为02221113(个人理解有误感谢指出)参考代码import java.util.Scanner;public class Main {static int n;static int nq;static int[] arr new int[4];public static void main(String[] args) {Scanner sc new Scanner(System.in);n sc.nextInt();nq (int) Math.sqrt(n);f();System.out.println(arr[0] arr[1] arr[2] arr[3]);sc.close();}private static void f() {for (arr[0] 0; arr[0] nq 1; arr[0]) {for (arr[1] arr[0]; arr[1] nq 1; arr[1]) {for (arr[2] arr[1]; arr[2] nq 1; arr[2]) {for (arr[3] arr[2]; arr[3] nq 1; arr[3]) {if (check()) {return;}}}}}}private static boolean check() {int sum arr[0] * arr[0] arr[1] * arr[1] arr[2] * arr[2] arr[3] * arr[3];if (sum n)return true;elsereturn false;}}Post Views:9