• 蓝桥杯 2016年 第七届 四平方和(JAVA)


    蓝桥杯 2016年 第七届 四平方和(JAVA)

    • 小技巧

      判断一个double类型的值a是否为整数,可以使用如下方法

      if((a%1)<Double.MIN_VALUE){ //... }
      
    • 基础暴力解法

      package provincial_2016B;
      
      import java.util.Scanner;
      
      public class Eight {
      	public static void main(String[] args) {
      		Scanner scan = new Scanner(System.in);
      		int n=scan.nextInt();
      		for(int i=0;i*i<=n;i++){
      			for(int j=i;i*i+j*j<=n;j++){
      				for(int k=j;i*i+j*j+k*k<=n;k++){
      					int temp=n-i*i-j*j-k*k;
      					double l=Math.sqrt(temp);
      					if(l%1<Double.MIN_VALUE){
      						System.out.println(i+" "+j+" "+k+" "+(int)l);
      						return;
      					}
      				}
      			}
      		}
      	}
      }
      
      
    • 在此基础上进行优化

      package provincial_2016B;
      
      import java.util.HashMap;
      import java.util.Scanner;
      
      public class Eight {
      	private static HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
      	
      	public static void main(String[] args) {
      		Scanner scan = new Scanner(System.in);
      		int n=scan.nextInt();
      		for(int c=0;c*c<=n;c++){
      			for(int d=c;c*c+d*d<=n;d++){
      				hm.put(c*c+d*d, c);
      			}
      		}
      		for(int a=0;a*a<=n;a++){
      			for(int b=a;a*a+b*b<=n;b++){
      				int temp=n-a*a-b*b;
      				if(hm.containsKey(temp)){
      					int c=hm.get(temp);
      					int d=(int)Math.sqrt(temp-c*c);
      					System.out.println(a+" "+b+" "+c+" "+d);
      					return;
      				}
      			}
      		}
      	}
      }
      
      
  • 相关阅读:
    微信小程序右上角胶囊的位置
    NLP复习大纲
    网站收藏
    css中如何调整插入背景图片的大小
    禁止Power Apps Canvas用户通过SharePoint Online UI界面访问站点list
    c++ vector基本知识
    c++ map基本知识
    c++ string操作
    python学习笔记30:操作excel
    c++, 如何run一个c++程序
  • 原文地址:https://www.cnblogs.com/fromneptune/p/12488706.html
Copyright © 2020-2023  润新知