蓝桥杯(3.6)

1221. 四平方和

java 复制代码
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.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 t1 = n-i*i-j*j-k*k;
					int t2 = (int)Math.sqrt(t1);
					if(t1 >= k*k && t2*t2 == t1) {//加上t1 >= k*k
						System.out.println(i+" "+j+" "+k+" "+t2);
						return ;
					}
				}
			}
		}
	}
}
java 复制代码
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		List<int[]> list = new ArrayList<>();//1
		
		for(int c = 0;c*c<=n;c++) {
			for(int d=c;c*c+d*d<=n;d++) {
				list.add(new int[] {c*c+d*d,c,d});
			}
		}//2
		
		list.sort(new Comparator<int[]>() {
			public int compare(int[] o1, int[] o2) {
				if(o1[0]!=o2[0])
					return o1[0]-o2[0];
				if(o1[1]!=o2[1])
					return o1[1]-o2[1];
				return o1[2]-o2[2];
			};
		});//3
		
		for(int a=0;a*a<=n;a++) {
			for(int b=a;a*a+b*b<=n;b++) {
				int t = n-a*a-b*b;
				//二分
				int l = 0,r = list.size()-1;
				while(l<r) {
					int mid = (l+r)/2;
					if(list.get(mid)[0] >= t)	r = mid;
					else	l = mid+1;
				}
				//l或者r
				if(list.get(l)[0] == t) {
					int c = list.get(l)[1];
					int d = list.get(l)[2];
					System.out.println(a+" "+b+" "+c+" "+d);
					return ;
				}
			}
		}
		
	}
}
java 复制代码
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		Map<Integer,int[]> map = new HashMap<>();//1
		
		for(int c = 0;c*c<=n;c++) {
			for(int d=c;c*c+d*d<=n;d++) {
				Integer cd = c*c + d*d;
				if(map.get(cd) == null)
					map.put(cd,new int[] {c,d});
			}
		}//2
		
		for(int a=0;a*a<=n;a++) {
			for(int b=a;a*a+b*b<=n;b++) {
				Integer t = n-a*a-b*b;
				if(map.get(t) != null) {
					int c = map.get(t)[0];
					int d = map.get(t)[1];
					System.out.println(a+" "+b+" "+c+" "+d);
					return ;
				}
			}
		}
		
	}
}

795. 前缀和

java 复制代码
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		int[] res = new int[n+1];
		int[] a = new int[n+1];

		for(int i=1;i<=n;i++)
			res[i] = sc.nextInt();
		//求前缀和数组
		for(int i=1;i<=n;i++) {
			a[i] = a[i-1] + res[i];
		}
		
		while(m-- != 0) {
			int l = sc.nextInt();
			int r = sc.nextInt();
			System.out.println(a[r]-a[l-1]);
		}
	}
}

796. 子矩阵的和

java 复制代码
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		int q = sc.nextInt();
		int[][] a = new int[n+1][m+1];
		int[][] b = new int[n+1][m+1];
		
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				a[i][j] = sc.nextInt();

		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				b[i][j] = b[i][j-1]+b[i-1][j]-b[i-1][j-1]+a[i][j];//初始化前缀和数组
		
		while(q-- != 0) {
			int x1 = sc.nextInt();
			int y1 = sc.nextInt();
			int x2 = sc.nextInt();
			int y2 = sc.nextInt();
			System.out.println(b[x2][y2]-b[x2][y1-1]-b[x1-1][y2]+b[x1-1][y1-1]);
		}
	}
}
相关推荐
古希腊被code拿捏的神12 小时前
【Flutter】面试记录
flutter·面试·职场和发展
凌肖战14 小时前
力扣网编程150题:加油站(贪心解法)
算法·leetcode·职场和发展
Memories off21 小时前
字节跳动-筋斗云面试记录
面试·职场和发展
程序员小白条1 天前
我的第二份实习,学校附近,但是干前端!
java·开发语言·前端·数据结构·算法·职场和发展
趣多多代言人2 天前
从零开始手写嵌入式实时操作系统
开发语言·arm开发·单片机·嵌入式硬件·面试·职场和发展·嵌入式
unicrom_深圳市由你创科技2 天前
Unity开发如何解决iOS闪退问题
unity·ios·蓝桥杯
开开心心就好2 天前
高效报价软件,简化商铺定价流程
服务器·数据库·安全·面试·职场和发展·电脑·symfony
独行soc3 天前
2025年渗透测试面试题总结-2025年HW(护网面试) 33(题目+回答)
linux·科技·安全·网络安全·面试·职场和发展·护网