四平方和问题(java)

QUESTION:

四平方和的定理又称拉格朗日定理:每个正整数都可以表示至多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
资源约定:
峰值内存消耗(含虚拟机) < 256M   CPU消耗  < 3000ms

 

ANSWER:

 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main(String[] args){
 4         Scanner sc = new Scanner(System.in);
 5         int n = sc.nextInt();
 6         
 7         if(n>0&&n<=5000000){
 8             for(int i = 0;i<(int)Math.sqrt(n)+1;i++){
 9                 for(int j = 0;j<(int)Math.sqrt(n)+1;j++){
10                     for(int k = 0;k<(int)Math.sqrt(n)+1;k++){
11                         for(int h = 0;h<(int)Math.sqrt(n)+1;h++){
12                             if(i*i+j*j+k*k+h*h==n){
13                                 System.out.println(i+" "+j+" "+k+" "+h);
14                                 System.exit(0);
15                             }
16                         }
17                     }
18                 }
19             }
20         }
21         
22     }
23 }

 

PS:

遇见题真的是不要怕,一看见题心里就想,完了这道题不会,这不行。

本来会的题,都不会了。

抓住问题的点,难题简单化。

 

posted @ 2019-03-20 18:50  高欣的博客  阅读(934)  评论(0编辑  收藏  举报