首页 > 其他分享 >蓝桥杯2021年第十三届省赛真题-直线

蓝桥杯2021年第十三届省赛真题-直线

时间:2024-03-31 15:30:59浏览次数:42  
标签:直线 20 真题 int double 蓝桥 2021 y1 x1

一、题目

【问题描述】

        在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。

        给定平面上 2 × 3 个整点 {(x, y)|0 ≤ x < 2, 0 ≤ y < 3, x ∈ Z, y ∈ Z},即横坐标是 0 到 1 (包含 0 和 1) 之间的整数、纵坐标是 0 到 2 (包含 0 和 2) 之间的整数的点。这些点一共确定了 11 条不同的直线。

        给定平面上 20 × 21 个整点 {(x, y)|0 ≤ x < 20, 0 ≤ y < 21, x ∈ Z, y ∈ Z},即横坐标是 0 到 19 (包含 0 和 19) 之间的整数、纵坐标是 0 到 20 (包含 0 和 20) 之间的整数的点。请问这些点一共确定了多少条不同的直线。

【答案提交】

        这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

二、分析

        横坐标是 0 到 19 、纵坐标是 0 到 20 ,问这些点一共确定了多少条不同的直线,我们确定一条直线用的是斜截式,我们找出所有的直线,然后存到hashSet中,以保证直线都是不同的。

package lan2021;

import java.util.Set;
import java.util.HashSet;

public class C直线 {
	public static void main(String[] args) {
		new C直线().run();//创建一个对象,调用了run方法
	}
	int X = 20, Y = 21;//横坐标20个纵坐标21个
	void run() {
		Set<Line> set = new HashSet<>();//HashSet对象实现了接口的方法
		for(int x1 = 0; x1 < X; x1++) {
			for(int y1 = 0; y1 < Y; y1++) {
				for(int x2 = x1; x2 < X; x2++) {
					for(double y2 = 0; y2 < Y; y2++) {
						//当x1 = x2,时斜率不存在或者想成是无穷大
						if(x1 != x2) {
							double k = (y2-y1) / (x2-x1);
							double b = -x1 * k + y1; //y1=k*x1+b
							set.add(new Line(k,b));
						}
					}
				}
			}
		}
		
		System.out.println(set.size() + X);//
	}

	//定义一个line类,表示直线
	class Line {
		double k;
		double b;

		//构造方法
		Line(double k, double b) {
			this.k = k;
			this.b = b;
		}
		//当向 HashSet 中添加一个元素时,
		//HashSet 会首先调用该元素的 hashCode 方法得到其哈希码,
		//然后根据哈希码确定存储位置。如果该位置上已经存在元素,
        //HashSet 会调用这些元素的 equals 方法逐一比较来确定是否为同一个元素。

		//重写equals方法,当两个Line对象的斜率和截距都相同时,才返回TRUE
		@Override
		public boolean equals(Object obj) {
			return k == ((Line)obj).k && b== ((Line)obj).b;
		}
		@Override
		public int hashCode() {//将斜率和截距转换为整形,作为哈希码返回
			return (int)k ^ (int)b;
		}
	}
}

这个代码是有问题的(斜率是浮点类型的,精度是不确定的), 可以参照第十二届蓝桥杯 2021年省赛真题 (Java 大学B组) 第一场_缩放质因子-CSDN博客

标签:直线,20,真题,int,double,蓝桥,2021,y1,x1
From: https://blog.csdn.net/2301_76876837/article/details/136997120

相关文章

  • 蓝桥杯2014年第十三届省赛真题-猜字母
    一、题目猜字母  把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。  接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。  得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。答案是......
  • 蓝桥杯2020年第十三届省赛真题-合并检查
    一、题目合并检测新冠疫情由新冠病毒引起,最近在A国蔓延,为了尽快控制疫情,A国准备给大量民众进病毒核酸检测。然而,用于检测的试剂盒紧缺。为了解决这一困难,科学家想了一个办法:合并检测。即将从多个人(k个)采集的标本放到同一个试剂盒中进行检测。如果结果为阴性,则说明这k......
  • 蓝桥杯2019年第十三届省赛真题-数列求值
    一、题目数列求值【问题描述】给定数列1,1,1,3,5,9,17,…,从第4项开始,每项都是前3项的和。求第20190324项的最后4位数字。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个4位整数(提示:答案的千位不为0),在提交答案时只填......
  • 20211110lyxDER编码
    一、任务详情参考附件中图书p120中7.1的实验指导,完成DER编码。Name实例中,countryName改为"CN",organizationName="你的学号"commonName="你的姓名拼音"。用echo-n-e"编码">你的学号.der中,用OpenSSLasn1parse分析编码的正确性。提交编码过程文档(推荐markdown格式)。......
  • DEVASC提示remote: Support for password authentication was removed on August 13,
    意思是:对密码身份验证的支持已于2021年8月13日移除。解决:在git仓库文件夹下使用ssh密钥验证:gitremotermorigin   ---将名为"origin"的远程仓库从本地Git仓库中移除[email protected]:GithubName/repositoryName.git   ---将名......
  • java计算机毕业设计(附源码)阳光学院蓝桥杯名师工作室(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:阳光学院蓝桥杯名师工作室的成立,源自于当前信息技术迅猛发展的时代背景和对高素质计算机人才的迫切需求。在全球化和数字化浪潮推动下,编程能力、算法设计......
  • CCF-CSP真题《202309-3 梯度求解》题解
    题目string转longlong忘记处理负数卡了半天,服了#include<iostream>#include<cstdio>#include<cstring>#include<sstream>typedeflonglongll;usingnamespacestd;intn,m,temp;lla[302];stringf,x,b;llmod=1e9+7;structnode{ stringcon; n......
  • 【2024年5月备考新增】《软考真题分章练习(含答案解析) - 14 组织级项目管理(高项)》
    1题目1、办公软件开发公司A非常重视软件过程管理,按照CMMI(能力成熟度模型)逐步进行过程改进,刚刚实现了组织级过程性能、定量项目管理,按照CMMI(能力成熟度模型),A公司达到了()级别。A.CMMI2B.CMMI3C.CMMI4D.CMMI52、CMMI的连续式表示法与阶段式表示法分别表示:()。A.项......
  • 七段码(蓝桥杯)
    文章目录七段码题目描述答案:80分析编程求解:有多种方法方法一:状态压缩+枚举+构图(以二极管为顶点)+DFS判断连通代码方法二:bfs七段码题目描述小蓝要用七段码数码管来表示一种特殊的文字。上图给出了七段码数码管的一个图示,数码管中一共有7段可以发光的二极管,分别......
  • 2024 蓝桥打卡Day27
    D27ccfcsp代码练习材料整理Java中数组复制1.使用clone()方法2.使用System.arraycopy()方法四舍五入Arrays类进制转换十进制转其他进制其他进制转换为十进制保留小数位数使用String.format()使用DecimalFormat的format()方法使用String.formatArrayListHash......