蓝桥杯(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]);
		}
	}
}
相关推荐
Nil2083 分钟前
leetcode 198打家劫舍
算法·leetcode·职场和发展
熊猫钓鱼>_>6 小时前
面试出现 606 次的第 K 大,被拆成三个问题问
算法·面试·职场和发展·校招·面经·oj·ai生成
职业信用与履历核验知识库6 小时前
职业画像的数据质量与缺失值处理可靠吗?来源、验证与纠错方法
职场和发展
考研保研资料分享7 小时前
北大软微软件工程保研经验:哈工大面试追问与补录风险取舍
面试·职场和发展·软件工程
yuanxi2008 小时前
长鑫科技4F架构突破:技术节点如何改写客户价值判断
职场和发展·创业创新·学习方法
java_nnnn9 小时前
LeetCode刷题滑动窗口(长度最小的子数组)
算法·leetcode·职场和发展
救救孩子把9 小时前
AI面试八股文-01_1-LLM基础概念(Token-上下文窗口-幻觉)
人工智能·面试·职场和发展·llm·token
Nil20819 小时前
leetcode 763划分字母区间
算法·leetcode·职场和发展
不会就选b21 小时前
算法日常・每日刷题--<动态规划>19
算法·leetcode·职场和发展
考研保研资料分享21 小时前
新闻传播保研经验:中传预推免面试、广告学代表作与实习准备(2025)
面试·职场和发展