蓝桥杯(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]);
		}
	}
}
相关推荐
独行soc2 小时前
2025年渗透测试面试题总结- 某四字大厂面试复盘扩展 一面(题目+回答)
java·数据库·python·安全·面试·职场和发展·汽车
黄油烤菠萝2 小时前
蓝桥杯-卡java排序
c++·算法·蓝桥杯
梁下轻语的秋缘7 小时前
每日c/c++题 备战蓝桥杯(求解三个数的最大公约数与最小公倍数)
c语言·c++·学习·算法·蓝桥杯
曦月逸霜8 小时前
第十四届蓝桥杯省赛真题解析(含C++详细源码)
c++·算法·蓝桥杯
蓝桥_吹雪9 小时前
【备赛】蓝桥杯实现多个LED联合控制
笔记·stm32·单片机·蓝桥杯
对方正在长头发丿10 小时前
棋盘问题(DFS)
数据结构·c++·算法·蓝桥杯·深度优先
@蓝莓果粒茶10 小时前
LeetCode第132题_分割回文串II
开发语言·算法·leetcode·职场和发展·c#·.net·linq
ChoSeitaku12 小时前
NO.66十六届蓝桥杯备战|基础算法-贪心-区间问题|凌乱的yyy|Rader Installation|Sunscreen|牛栏预定(C++)
c++·算法·蓝桥杯
EnigmaCoder12 小时前
蓝桥杯刷题周计划(第四周)
c++·算法·蓝桥杯
绿水毛怪.12 小时前
蓝桥杯基础算法-字符串与集合
算法·职场和发展·蓝桥杯