分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]

代码如下:

<html>
题:<br />
有n个直线最多可以把一个平面分成多少个部分<br /><br />
线条数:<input type="text" id="line"/><br />
内交点:<label id="innerPoint"></label><br />
分割数:<label id="part" style="background:yellow;"></label><br />
<input type="button" onclick="calculate()" value="计算"/>
</html>
<script type="text/javascript">
function calculate(line)
{
var line = document.getElementById('line').value;
if(line == "")
{
line = 0;
document.getElementById('line').value = line;
}
var line = parseInt(line);
var innerPoint = line * (line -1) / 2;
var part = (Math.pow(line,2) + line)/2 + 1;//line + innerPoint + 1等于(线条数的平方+线条数)/2 + 1

document.getElementById('innerPoint').innerText = innerPoint;
document.getElementById('part').innerText = part;
}
</script>

说一下规律:

①最多分成的部分:线条数+内交点数+1

②内交点数=(线条数-1)的内交点数+(线条数-1),新添加的线条可以会与除他之外的线条有交点

③用递归求出内交点数,然后代入①计算

上面是正常的数学思维,下面说说我用的行测知识,就是我代码的东东

我列出了1~5条直线一些可用的参数:

直线数  内交点  外交点  部分数

1      0      2      2

2      1      4       4

3      3      6       7

4      6      8      11

5     10    10     16

发现,外交点是没有意义的,反正都是直线数的2倍

而部分数=直线数+内交点数+1

相邻直线个数内交点个数组成一个等差数列,这个等差数列公差为1,  1-0=1,3-1=2,6-3=3,10-6=4, 横向看1+0=1,2+1=3,3+3=6...但是这样还是用到了递归要求出上一个对应的内交点个数,于是纵向看规律,2*1=2 3*2=6 4*3=12...正好是内交点个数的2倍

(0)

相关推荐

  • 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]

    复制代码 代码如下: <html> 题:<br /> 有n个直线最多可以把一个平面分成多少个部分<br /><br /> 线条数:<input type="text" id="line"/><br /> 内交点:<label id="innerPoint"></label><br /> 分割数:<label id="part

  • JS前端笔试题分析

    本文实例分析了JS前端笔试题.分享给大家供大家参考,具体如下: 1.如何根据逗号分隔的字符串创建数组呢?请为下面的字符串创建一个数组,并访问第三个元素:"cats,dogs,birds,horses" 知识点:数组和字符串的转换.考察split() 方法.把一个字符串分割成字符串数组(将字符串按某个字符切割成若干个字符串,并以数组形式返回) var animalString="cats,dogs,birds,horses"; var animalArray=anim

  • Spring,hibernate,struts经典面试笔试题(含答案)

    本文讲述了Spring,hibernate,struts经典面试笔试题及其参考答案.分享给大家供大家参考,具体如下: 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用: ① . 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代

  • JS经典正则表达式笔试题汇总

    本文实例总结了JS经典正则表达式笔试题.分享给大家供大家参考,具体如下: 一.复习字符串的传统操作 如何获取一个字符串中的数字字符,并按数组形式输出,如 dgfhfgh254bhku289fgdhdy675gfh 输出[254,289,675] 分析:循环用charAt()的方法获取到每一个子字符串,判断他是不是在0~9之间,是就把他扔到准备好的数组里 var str="dgfhfgh254bhku289fgdhdy675gfh"; findNum(str); function fin

  • 基于C++的拼多多算法在线笔试题示例

    本文实例讲述了基于C++的拼多多算法在线笔试题.分享给大家供大家参考,具体如下: 最近在狼厂实习中,很久没做题了.秋招第一发, 拼多多...  四个简单题,看到有些人竟然觉得难? 我来降一发自己的RP,这题目觉得难的,如果你拿到比我好的Offer,我是不服气的.. 四个题...其实我也就写了40分钟吧..不过最后也没有满分, 390/400, 第三题不知道为嘛一直有10分过不了.. 更一下, 刚刚好像发现第三题...这个>号, 我写的是>= ....? 可是我看题目好像是 >= 呀...

  • 华为校园招聘上机笔试题 扑克牌大小(python)

    本文为大家分享了华为校园招聘上机笔试题,供大家参考,具体内容如下 [编程题] 扑克牌大小 时间限制:10秒 空间限制:131072K 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张. 牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):)  3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER  输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-&quo

  • 华为2019校招笔试题之处理字符串(python版)

    说明 华为2019在线笔试题,现整理如下,以供之后参考 GitHub 题目介绍 ################################################################# ################################################################# ''' 题目描述: -- 对输入字符串检查是否存在非法字符,输出合法字符串(去重)和非法字符串(不去重) -- 对合法字符串循环左移10次,在进行排序输出.

  • 从一道面试题看你对java的理解程度

    简介 最近有点忙,很久没更新文章了,后面会慢慢恢复...回顾正题 最近看到一篇文章,关于一道面试题,先看一下题目,如下: public static void main(String[] args) { Integer a = 1; Integer b = 2; System.out.printf("a = %s, b = %s\n", a, b); swap(a, b); System.out.printf("a = %s, b = %s\n", a, b); }

  • 2021最新Android笔试题总结美团Android岗职能要求

    目录 Android开发面试的几部分 1.基础知识 Java部分: Android部分: 数据结构与算法: 计算机基础: 设计模式: 开源项目: 重点项目经历 技术以外的东西 自我驱动和追求 沟通和协作 我的面经总结 Android Java 计算机网络 数据结构及算法 题外话 优秀的战士需要出色的剑才能战斗.同样,在现代IT中,每个编码人员都需要最好的Android开发人员工具来提高他们的技能和效率.在Android应用程序开发这个残酷的竞争行业中,只有优秀的开发人员才能生存下去.您需要向客户

  • C语言八道笔试题精讲带你掌握指针

    目录 题目一 题目二 题目三 题目四 题目五 题目六 题目七 题目八 为了题目的准确性和我们一般学习过程中的习惯,这里所有的题目代码都是在 X86 环境(32 位平台)下运行的. 题目一 #include <stdio.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int* ptr = (int*)(&a + 1); printf("%d,%d", *(a + 1), *(ptr - 1)); return 0; } /

随机推荐