当前位置: 首页 > news >正文

大理网站建设阿里巴巴做网站联系人

大理网站建设,阿里巴巴做网站联系人,电子商务网站的设计,有网站如何做直播目录 前言#xff1a;试题 A: 报数游戏试题 B: 类斐波那契循环数试题C:分布式队列 前言#xff1a; 没参加这次蓝桥杯算法赛#xff0c;十四届蓝桥杯被狂虐#xff0c;对算法又爱又恨#xff0c;爱我会做的题#xff0c;痛恨我连题都读不懂的题#x1f62d;,十四届填空只… 目录 前言试题 A: 报数游戏试题 B: 类斐波那契循环数试题C:分布式队列 前言 没参加这次蓝桥杯算法赛十四届蓝桥杯被狂虐对算法又爱又恨爱我会做的题痛恨我连题都读不懂的题,十四届填空只做对一个今天闲的蛋疼想看看这次比赛能做对几个。 暂时没找到题目这是网上找的简略版看了看就知道蓝桥杯前几道题就喜欢考数学思维和十四届一样 试题 A: 报数游戏 简洁版 从小到大排列是20或24倍数的正整数前10个数依次是”20 24 40 48 60 72 80 96 100 120“求第202420242024个数是多少填空题 解题思路 最开始想的是求求它俩的最小公倍数是120发现没啥用然后再发现24比20多4也就是24向前叠加5次就整整多出来一个20然后再在纸上画画发现了每10次一循环 可以看出第10个数是24 * 5第20个数是24 * 10那么202420242024可以分成202420242020 4最后发现偶数4也是24结尾那么答案就是202420242024 / 2 * 24 试题 B: 类斐波那契循环数 个人理解 将一个n位的数字按一定的规则排成一个数列。 规则 这个数列的起始部分分别为该数字每一位上的数。例如数字12345排成数列是【12345】。 这个数列的其它部分分别为从当前数列的最后一位起前n项的和。例如数字12345共5位排成数列【12345(?)…】此时数列的第6个数就是从当前数列的最后一位起前5项的和即1234515【1234515】第7个数就是从当前数列的最后一位起前5项的和即23451529【123451529】… 如果这个数列中包含这个数字本身那么这个数就是类斐波那契循环数。 求从0~10^7范围中最大的类斐波那契循环数。填空题 解题思路 仔细做了做例子发现 发现有点像滑动窗口求新数后窗口移动一下所以想着将整个过程放在一个数组里但是这样一整每次数组的长度都是不定的不好定义数组的长度且求到新数后数组前面的区域就没用了所以就想着能否用一个定长数组来做滑动窗口且所有区域都用的上 分析一下上面例子求出新数15后第一个数1就对求下一个数29来说没用了为什么不把15放在1的位置以此类推29放在2的位置 这样就好整了数组大小就等于数字的位数还需要一个K指针在整个数组中循环移动用%Length就解决了 说实话这个灵感来源于我嵌入式对页面切换的处理… 最后看是怎么停止了题目说了这个数列中包含这个数本身那么这个数就是类斐波那契循环数因为每次求得得新数都是递增的所以如果新数都大于原始数的话那么说明这个数不是类斐波那契循环数 既然求类斐波那契循环数的整个逻辑模式都搞明白了剩下就是用代码实现上述的功能需求了 import java.util.*;public class Main {static int END 10000000;public static void main(String[] args) {int MaxNumber 0;for(int i 1; i END; i ) { // 由1开始int Length GetNumnberLength(i);int Array[] new int[Length];NumbertoArray(Array, i);int k 0;while(true) {Array[k] ListNumberSum(Array);if(Array[k] i || Array[k] i) break; // 要么是类斐波那契循环数要么不是k (k 1) % Length;}if(Array[k] i) { // 是的话更新MaxNumberif(MaxNumber i) {MaxNumber i;}}}System.out.println(MaxNumber);}public static int GetNumnberLength(int number) {int len 0;while(number 0) {len ;number number / 10;}return len;}public static void NumbertoArray(int array[], int number) {for(int i array.length - 1; i 0; i --) {array[i] number % 10;number number / 10;}}public static int ListNumberSum(int array[]) {int sum 0;for(int i 0; i array.length; i ) sum sum array[i];return sum;} } 其中while循环应该也循环不了几百次整个时间复杂度应该等于10^7 * while循环次数超过不了10^9复杂度计算机一两秒就算出来了。 答案 以下试题全靠自己想法去做可能有漏洞 试题C:分布式队列 解题思路 先做例题可以看出每个结点都可以当作一个独立的数组在执行操作命令的时候对对应数组进行操作add就是对主结点做添加操作sync就是对对应副结点做操作query就是输出情况 那么好怎么将具体的例子解法抽象成一般问题的解决逻辑呢并且这个逻辑能较好用编程去实现 首先分析到这个题有点像木桶的短板效应即输出只需要关注最少元素的那个副结点即可且主结点内装具体什么元素好像都不重要重要的是装了几个元素 这样以来变成就简化成了一维数组每个数组下标对应相应结点数组对应值为同步的数的数量只需关注最小的那个结点即可 代码 import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int Number sc.nextInt(); // 输入String Temp sc.nextLine(); // 吃空格int Array[] new int [Number];while(sc.hasNext()){String Command sc.nextLine();if(Command.charAt(0) a) { Array[0] ; // add命令 }else if(Command.charAt(0) q) {System.out.println(GetArrayMinNumber(Array));}else {String Split[] Command.split(\\s);int Index Integer.parseInt(Split[1]);if(Array[Index] Array[0]) Array[Index] ; // 主节点还有多的元素才能同步}}}public static int GetArrayMinNumber(int array[]) {int MinOne Integer.MAX_VALUE;for(int i 0; i array.length; i ) {if(MinOne array[i]) MinOne array[i];}return MinOne;} }注意主节点没有多余的元素就不能同步给副结点了 例如 2 sync 1 sync 1 add 11 add 22 query 输出为0而不是2 另外sc.hasNext是读到文件末尾会停用while true停不下来
http://www.zqtcl.cn/news/907438/

相关文章:

  • 做胎儿羊水鉴定网站网站管理主要包括哪些内容
  • 公司网站建设应注意网店推广有哪些方法
  • 新网$网站优化企业资源管理软件
  • 甘肃营销型网站制作网页设计流程的图片
  • 厦门成交型网站建设公司今科云平台网站建设
  • 网站推广效果怎样学电商赚钱
  • 企业网站的一般要素包括哪些公司网站建设是什么费用
  • 网站收录说明长沙知名的营销公司
  • 网站开发 业务流程图天津网站排名方案
  • 风雨同舟网站建设小说网站如何做书源
  • h5手机网站建设哪家好广州有什么好玩的地方和风景好
  • 北京哪个网站建设最好怀化网站建设公司
  • 做类似猪八戒网的网站注册一个商标多少钱
  • 怎么提高网站访问速度wordpress怎么备份按在
  • 淘宝网站是谁做的好处wordpress商业授权
  • 淘宝客网站怎么批量采集淘宝商品方维采集淘宝数据思路珠宝类网站建设
  • 重庆网站关键字优化雅布设计中国分公司在哪里
  • 山西做网站费用温州做网站制作
  • 购买域名后 可以做网站么苏州市建设厅网站
  • 网站域名如何查询win7优化配置的方法
  • 免费建网站的服务器佛山城市建设工程有限公司
  • 安溪人做的网站wordpress 单页面 主题
  • 品牌型网站设计创意 国外 网站
  • o2o网站建设包括哪些平面设计作品欣赏
  • 万齐网站建设成都旅游攻略自由行攻略地图
  • 新网做网站流程app下载汅api未满入内
  • 邓州网站建设建设摩托车价格大全
  • 关闭网站怎么不保存我做的更改软件工程师英文
  • 垦利网站定制提供哈尔滨网站建设服务
  • 谷歌在线浏览器入口seo内容优化是什么意思