题目描述

有108个村庄排在一条公路上,依次编号为0~108-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0.
现在需要建设车站,有两个要求必须被满足:
1、每个有牛牛居住的村庄必须修建车站。
2、相邻车站的距离必须为1或为某个质数。
现给出n和a数组,求需要建设车站的最小数量。

题解:

纪念我第一次做这种题,以前都是做竞赛题
题目看似杂乱无序,但其实冥冥中都遵循着规律
没错就是哥德巴赫猜想
哥德巴赫猜想:
任一大于2的偶数都可写成两个素数之和
所以我们可以将题目总结为:
1.当两站之间距离为素数,那两站之间就不用修站了,就光算上第二个站所修的,num++
2.如果两站之间距离不为素数,但是为偶数,然后偶数可以写成两个素数之和,也就是在两个站中间存在一个位置,将距离分为两个素数距离,所以num+2
3.如果不是素数,也不是偶数。又因为奇数=奇数+偶数,并且2是唯一的偶数的素数,所以如果距离-2是素数的话,就说明中间可以放一个站将距离分为2和另一个素数,如果不能就要放两个站才可以,分别是num+2,num+3
4.每个站本身也要算上
ok,撒花✿✿ヽ(°▽°)ノ✿

代码:

class Solution {public:/*** * @param n int整型 * @param a int整型一维数组 * @param aLen int a数组长度* @return int整型*/bool iff(int n){if(n==1)return 1;if(n==2)return 1;for(int i=2;i<=sqrt(n);i++){if(n%i==0)return 0;}return 1;}int work(int n, int* a, int aLen) {// write code hereint num=0;for(int i=1;i<aLen;i++){int len=a[i]-a[i-1];if(iff(len))num++;else if(len%2==0)num+=2;else if(len%2==1){if(iff(len-2))num+=2;else num+=3;}}num+=1;int sum=num;return sum;}
};

牛客题霸 车站建造问题 C++题解/答案相关推荐

  1. 牛客题霸 [矩阵元素查找] C++题解/答案

    牛客题霸 [矩阵元素查找] C++题解/答案 题目描述 已知int一个有序矩阵mat,同时给定矩阵的大小n和m以及需要查找的元素x,且矩阵的行和列都是从小到大有序的.设计查找算法返回所查找元素的二元数 ...

  2. 牛客题霸 [栈和排序] C++题解/答案

    牛客题霸 [栈和排序] C++题解/答案 题目描述 给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组进行从大到小排序 当无法完全排序时,请输出字典序最大的出栈序 ...

  3. 牛客题霸 [字符串的排列] C++题解/答案

    牛客题霸 [字符串的排列] C++题解/答案 题解: stl真好用,emmm... 代码: class Solution {public:vector<string> Permutatio ...

  4. 牛客题霸 [ 验证IP地址] C++题解/答案

    牛客题霸 [ 验证IP地址] C++题解/答案 题目描述 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址 IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围 ...

  5. 牛客题霸 [表达式求值] C++题解/答案

    牛客题霸 [表达式求值] C++题解/答案 题目描述 请写一个整数计算器,支持加减乘三种运算和括号. 题解: 没有除法emmm 我们从头开始依次判断每个字符 如果是左括号,我们就找右括号,并截取括号内 ...

  6. 牛客题霸 [判断回文] C++题解/答案

    牛客题霸 [判断回文] C++题解/答案 题目描述 给定一个字符串,请编写一个函数判断该字符串是否回文.如果回文请返回true,否则返回false. 题解: 左右两端同时向中间缩 代码: class ...

  7. 牛客题霸 [分糖果问题] C++题解/答案

    牛客题霸 [分糖果问题] C++题解/答案 题目描述 一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下: 每个孩子不管得分多少,起码分到一个糖果. 任意两个相邻的孩子之间,得分较多的孩子必须拿多 ...

  8. 牛客题霸 [合并有序链表] C++题解/答案

    牛客题霸 [合并有序链表] C++题解/答案 题目描述 将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的. 题解: 首先判断l1和l2是否为空 然后依次比较l1和l2的值 ...

  9. 牛客题霸 [二叉树的镜像]C++题解/答案

    牛客题霸 [二叉树的镜像]C++题解/答案 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 题解: 根据题也不难看出,二叉树的镜像定义其实就是左右树翻转 所以我们一直递归左子树,到头后递归右子 ...

最新文章

  1. java exchange发邮件_java发送exchange邮件问题
  2. 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)
  3. 新手入门深度学习 | 3-1:数据管道Dataset
  4. 在绘制USB2.O设备接口差分线时,应注意以下几点要求:
  5. 全球及中国洗涤剂行业十四五总体规模与盈利状况分析报告2022版
  6. 完善Library的管理方式
  7. centos6.x redhat6.x 升级openssh8.7
  8. skywalking 安装_分布式监控系统SkyWalking
  9. 如何制作自己的R包?
  10. python中的元类_理解python中的元类
  11. 看书看困了,写几句提提精神
  12. 光耦驱动单向可控硅_光耦继电器在信号传输方面的优势!
  13. Atitit 前端测试最简化内嵌web服务器 php 与node.js 目录 1.1. php内置Web Server 1 1.2. Node的 2 Node的比较麻烦些。。Php更加简单
  14. 桌面整理工具 Stardock Fences(个人使用,建议试用)
  15. python发送邮件 退回_用python发邮件给gmail用户,被gmail当成spam退回
  16. HTML META 元数据标签详解
  17. wand(wead and)算法简介与改造,修改为店铺与品牌的关键字搜索
  18. 安化哪里赏雪景?去云台山巅,一步一景,景景皆宜!
  19. php 8bit 10bit 解码,求助:我想把10bit的MKV压制成8bitMP4
  20. python解释器环境中用于表示上一次运算结果的特殊变量_知到智慧树_中国画基础_作业题库答案...

热门文章

  1. 人体的血管连起来竟能绕地球两圈!?| 今日最佳
  2. 趣读:程序员泪流满面的20个瞬间!
  3. 机器学习:怎样才能做到从入门到不放弃?
  4. AI催生新的工作机遇:5个未来会很吃香的岗位
  5. 中国式创新技术“步态识别”终于来临,你大胆地走两步,我就知道你是谁
  6. 三次握手和四次挥手图解_三次握手和四次挥手简单理解
  7. mysql设置表名字为占位符_这可能是把MySQL存储引擎讲解的最清楚的一篇文章了
  8. php webshell开源,[github开源]webshell连接器--Jeshell
  9. python怎么安装开发版_python - easy_install的安装和使用
  10. 归并排序 java 迭代_经典排序算法之归并排序(示例代码)