OD机试题-2022.4
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class ODTest {
public static void main(String[] args) {
/**
* 1. 标题:构成的正方形数量 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
* 输入N个互不相同的二维整数坐标, 求这N个坐标可以构成的正方形数量。(内积为零的两个向量垂直)
* 输入描述:
* 第一行输入为 N,N 代表坐标数量,N为正整数。N <= 100
* 之后的 K 行输入为坐标 x y以空格分隔,x, y 为整数, -10<=x, y <= 10
* 输出描述:
* 输出可以构成的正方形数量
* 示例1
* 输入
* 3
* 1 3
* 2 4
* 3 1
* 输出
* 0
* 说明 3个点不足以构成正方形
* 示例2
* 输入
* 4
* 0 0
* 1 2
* 3 1
* 2 -1
* 输出
* 1
* 说明 此4点可构成正方形
*/
Scanner scanner = new Scanner(System.in);
int N = Integer.parseInt(scanner.nextLine());
if (N < 4) {
System.out.println(0);
return;
}
//定义N行两列的二维数组
int[][] zuobiaos = new int[N][2];
for (int i = 0; i < zuobiaos.length; i++) {
String[] strings = scanner.nextLine().split(" ");
zuobiaos[i][0] = Integer.parseInt(strings[0]);
zuobiaos[i][1] = Integer.parseInt(strings[1]);
}
int count = 0;
for (int i = 0; i < zuobiaos.length - 3; i++) {
for (int j = i + 1; j < zuobiaos.length - 2; j++) {
for (int k = j + 1; k < zuobiaos.length - 1; k++) {
for (int l = k + 1; l < zuobiaos.length; l++) {
if (canBeSquare(zuobiaos[i], zuobiaos[j], zuobiaos[k], zuobiaos[l])) {
count++;
}
}
}
}
}
System.out.println(count);
/**
* 2. 如果三个正整数A、B、C ,A²+B²=C²则为勾股数
* 如果ABC之间两两互质,即A与B,A与C,B与C均互质没有公约数,
* 则称其为勾股数元组。
* 请求出给定n~m范围内所有的勾股数元组
*/
List<int[]> out2 = fun2(1, 20);
out2.forEach(res1 -> {
System.out.println(res1[0] + " " + res1[1] + " " + res1[2]);
});
/**
* 3. 警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如 “HH:MM” 表示的时刻。
* 根据警察和线人的约定,为了隐蔽,该时间是修改过的,解密规则为:利用当前出现过的数字,
* 构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。每个出现数字都可以被无限次使用。"
*/
String out3 = fun3("22:59");
System.out.println(out3);
}
public static boolean canBeSquare(int[] i, int[] j, int[] k, int[] l) {
//0 0, 1 2, 3 1, 2 -1
return calculate(new int[]{i[0] - j[0], i[1] - j[1]}, new int[]{k[0] - l[0], k[1] - l[1]}) ||
calculate(new int[]{i[0] - k[0], i[1] - k[1]}, new int[]{j[0] - l[0], j[1] - l[1]}) ||
calculate(new int[]{i[0] - l[0], i[1] - l[1]}, new int[]{j[0] - k[0], j[1] - k[1]});
}
// 关键点: 判断正方形,需要其对角线垂直且长度相等
public static boolean calculate(int[] vec1, int[] vec2) {
return vec1[0] * vec2[0] + vec1[1] * vec2[1] == 0 && (vec1[0] * vec1[0] + vec1[1] * vec1[1]) == (vec2[0] * vec2[0] + vec2[1] * vec2[1]);
}
public static List fun2(int n, int m) {
List res = new ArrayList();
for (int a = n; a <= m; a++) {
for (int b = a + 1; b <= m; b++) {
double y = Math.pow(a, 2) + Math.pow(b, 2);
for (int c = b + 1; c <= m; c++) {
double x = Math.pow(c, 2);
if (x == y) {
if (isP(a, b) && isP(a, c)) {
res.add(new int[]{a, b, c});
}
}
}
}
}
return res;
}
public static boolean isP(int a, int b) {
if (a < b) {
int tmp = a;
a = b;
b = tmp;
}
int c;
while ((c = a % b) !=0) {
a = b;
b = c;
}
return b == 1;
}
public static String fun3(String time) {
char[] chars = time.toCharArray();
//单个数字list
ArrayList<Integer> nums = new ArrayList<>();
for (char c : chars) {
if (c != ':') {
nums.add(c - '0');
}
}
String[] split = time.split(":");
//小时
Integer H = Integer.parseInt(split[0]);
//分钟
Integer M = Integer.parseInt(split[1]);
ArrayList<Integer> list = new ArrayList<>();
for (int i : nums) {
for (int j : nums) {
if (i <= 5) {
list.add(i * 10 + j);
}
}
}
//备选项排序,既可当H,也可以当M
list.sort(Comparator.comparing(o -> o));
//仅仅改变分钟就能得到最近的值
for (int i : list) {
if (i <= M) {
continue;
}
//12:13 -> 12:31
return format(H + ":" + i);
}
//小时数在23以下,可以使用最近的小时数
if (H != 23) {
for (int i : list) {
if (i <= H) {
continue;
}
//确保i的合法性
if (i <= 23) {
//12:59 ->15:11
return format(i + ":" + list.get(0));
}
}
}
//无法改别最近的小时与分钟。如23:59,00:00,15:15
return format(list.get(0) + ":" + list.get(0));
}
public static String format(String time) {
String[] split = time.split(":");
String H = split[0];
String M = split[1];
H = H.length() == 2 ? H : "0" + H;
M = M.length() == 2 ? M : "0" + M;
return H + ":" + M;
}
}
OD机试题-2022.4的更多相关文章
- 华为OD机试题
"""最长回文字符串问题"""# 说明:方法很多,这个是最简单,也是最容易理解的一个,利用了动态规化.# 先确定回文串的右边界i,然后以右边 ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- Java基础机试题
package day8;import java.util.Scanner;/** * Java基础机试题 * @author:lyrand * */public class convert { ...
- 牛客网华为机试题之Python解法
牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...
- 华为机试题【13】-wave数组找字母游戏
题目描述: Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词if,你必须先吃掉i然后才能吃掉f. 但现在你的任务可没有这么简单,你 ...
- 华为机试题【10】-求数字基root
题目描述: 求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复; 输入:输入任意一个或多个整数 输出:输出各位数字之和,直到和为个位数为止(输入异常,则返回-1),多行,每行对应一 ...
- 九度oj题目&吉大考研10年机试题全解
吉大考研机试2010年题目 题目一(jobdu1478:三角形的边). http://ac.jobdu.com/problem.php?pid=1478 给出三个正整数,计算最小的数加上次小的数 ...
- C#经典机试题(猫叫)
猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒.(C#语言) 1.要有联动性,老鼠和主人的行为是被动的. 2.考虑可扩展性,猫的叫声可能引起其他联动效应. public interface Observ ...
- java ee 面试时的机试题
写一个简单的用户登录 servlet+jsp+原生ajax+json实现方式: http://pan.baidu.com/s/1jGDY5h0
- ASPNET服务端控件练习(一个机试题)
简单记录: 模糊查询的select语句的拼写 public List<Model.Student> GetWhereStudent(string name, string sub, str ...
随机推荐
- 【Numpy】安装Anaconda3和调试
1,在Anaconda官网下载一个对应操作系统的安装包:https://www.anaconda.com/distribution/ 2,然后选版本操作系统和版本号,下载完成后安装 3,windows ...
- Docker 环境下如何配置你的镜像(基础)
一 .镜像操作 重命名镜像:docker tag 查看镜像: docker images 镜像删除: docker rmi 启动容器: docker run 基于已有 ...
- python import导入失败 相对路径 绝对路径
首先我们有这样一个目录结构 经过我无数次的调试,我发现从test3调用spider以及downloadss文件可以直接import调用 但是从外部的app.py文件调用,spider.py文件死活调用 ...
- RDD编程
一.词频统计 1.读文本文件生成RDD lines 2.将一行一行的文本分割成单词 words flatmap() 3.全部转换为小写 lower() 4.去掉长度小于3的单词 filter() 5. ...
- xmake构建C/C++编译环境
1. xmake介绍 XMake是一个基于Lua的轻量级跨平台自动构建工具,支持在各种主流平台上构建项目 xmake的目标是开发者更加关注于项目本身开发,简化项目的描述和构建,并且提供平台无关性,使得 ...
- Linux CentOS 8系统离线升级内核版本
Linux CentOS 8系统离线升级内核版本 搬运如下文章,十分感谢 https://blog.csdn.net/WQwinter/article/details/127231086 二.升级步骤 ...
- zynq 中断
#include "stdio.h"#include "xparameters.h"#include "xgpiops.h"#include ...
- springboot默认的json配置
springboot默认的json配置 1.@JsonIgnore 返回前端时对应字段不进行序列化返回 public class User { @JsonIgnore private String n ...
- Bug的前后台分类及定位技巧
必备工具:Firefox debug工具 一般浏览器F12即可 如何区分页面的bug问题归属:前端or后端 前端bug主要分为3个类别:HTML,CSS,Javascript三类问题 给个最大的区 ...
- percona mongo热备
https://www.percona.com/doc/percona-server-for-mongodb/LATEST/hot-backup.html#hot-backup Hot Backup ...