四平方和问题(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消耗  < 3000msjava

 

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:

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

原本会的题,都不会了。code

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

相关文章
相关标签/搜索