【饥饿的小易】小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃。最开始小易在一个初始位置x_0。对于小易所处的当前位置x,他只能通过神秘的力量 移动到 4 * x + 3或者8 * x + 7。因为使用神秘力量要耗费太多体力,所以它只能使用神秘力量最多100,000次。贝壳总生长在能被1,000,000,007整除的位置(比如:位 置0,位置1,000,000,007,位置2,000,000,014等)。小易需要你帮忙计算最少需要使用多少次神秘力量就能吃到贝壳。

输入描述:输入一个初始位置x_0,范围在1到1,000,000,006
输出描述:输出小易最少需要使用神秘力量的次数,如果使用次数使用完还没找到贝壳,则输出-1

解题思路:

小易的移动公式:f(x) = 4*x + 4       g(x) = 8*x + 7

计算可以得出两个规律:1. g(f(x)) = f(g(x)) 即f和g的执行顺序没有影响

2. f(f(f(x))) = g(g(x)) 即做3次f的变换等价于做2次g的变换

由规律1可以得出对于一个可行方案,可以调整其变换顺序。比如:ffggfggff 可以转换为fffffgggg

由规律2并且为了减少执行次数,每3个f可以转换为2个g 如方案fffffgggg可以转换为ffgggggg.
因此一个最优的策略:f的执行次数为 0, 1, 2。 对于输入x, 只需要要求x , 4x+3, 4(4x+3)+3 的最小g执行 次数即可

import java.util.Scanner;public class test1 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);long x0=sc.nextLong();long m=1000000007;//取模的值long s=10000;//神秘力量使用次数long[] begin=new long[3];//f(x) = 4x+3 执行3次
//         只要摸为0 就代表可以取到//3次的取值begin[0]=x0;begin[1]=(4*begin[0]+3)%m;begin[2]=(4*begin[1]+3)%m;long minStep = s;long cur = 0;int step = 0; //执行的步数for (int i = 0; i < 3; i++) {cur=begin[i];step=i;while(cur!=0&&step<minStep){cur=(8*cur+7)%m;//g(x) = 8x+7 执行step++;}minStep=step>minStep?minStep:step;}if (minStep < s) { //如果执行步长没有超过s输出最小步长      System.out.println(minStep);} else {//超过返回-1  System.out.println(-1);}}
}

饥饿的小易(java)相关推荐

  1. 饥饿的小易、另类加法

    1.用命令方式运行以下代码的运行结果是(C) public class f{public static void main(String[] args){String foo1 = args[1];S ...

  2. 求解解救amaze问题求解饥饿的小易问题

    求解饥饿的小易问题 题目描述 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者8 * ...

  3. 网易python笔试题_python 饥饿的小易(网易笔试题)

    本周早些时候,学弟给我发了一道网易的笔试题,饥饿的小易,感觉有点意思-分享给大家 题目描述: 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前 ...

  4. 饥饿的小易(枚举+广度优先遍历(BFS))

    题目描述 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者8 * x + 7.因为使 ...

  5. 饥饿的小易(分枝限界法)

    一. 程序题(共1题,100分) (程序题) 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x ...

  6. java http get_「面小易-面经12」阿里巴巴Java方向面试题汇总(含答案)

    简介: 从前几篇分享中能够看出,阿里不愧是"Java技术光明顶",无论是从Java方向的面经数量.质量,还是问题难度上来看,想要拿到阿里Java研发岗位的Offer,都需要面试者拥 ...

  7. java版小易准备去魔法王国采购魔法神器

    牛客网算法题 网易java笔试题(Java语言写的算法) 题目描述如下: 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x ...

  8. 网易之小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性.需要根据给定的w,x,y,z,求出集合中一共有多少个元素。

    import java.util.HashSet; import java.util.Scanner; import java.util.Set;/*** 小易最近在数学课上学习到了集合的概念,集合有 ...

  9. 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势

    [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小家java ...

  10. 刷题笔记之十 (小易的升级之路+找出字符串中第一个只出现一次的字符+洗牌+MP3光标位置)

    目录 1.存取任意指定序号的元素和在最后进行插入和删除运算,利用顺序表存储最节省时间 2. 数据结构中具有记忆功能的是栈 3. 递归程序的优化一般为 尾递归优化 4.二叉树遍历,前中后序遍历用到的是栈 ...

最新文章

  1. Netty时间轮调度原理分析,再不了解你就out啦
  2. findbugs教程
  3. java游戏重新开始_问题1:java问题--某局小游戏结束后怎么重新开始?
  4. 小程序开发提示没有npm路径_百度小程序三个框架的各自的特点
  5. MTK 驱动(4)---MTK Android Driver知识大全
  6. python怎样切换到上一行_如何返回到python中的前一行?
  7. 云计算开发python_云计算开发学习笔记:Python的环境搭建
  8. 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南...
  9. 知乎网软件测试和识,扩容检测工具_闪迪东芝内存卡_金士顿内存卡 知乎
  10. java:记一次因时区导致出参和入参时差8小时前因后果
  11. Harvard (name and date) 论文引用格式
  12. markdown语法中的空格_MarkDown语法
  13. 百分比收益率和对数收益率
  14. 判断一个点是否在闭合曲线内
  15. 岳飞诗词集萃[zz]
  16. 游戏黑客圣经GHB1学习笔记 part1(1-5)
  17. PHP自适应小说网站源码深度SEO优化自动采集
  18. golang实现图片颜色反转、图片灰度、缩放、转为字符画
  19. jquery表格插件jqgrid
  20. 开源IoT操作系统Mynewt使用简介

热门文章

  1. 初识中间件Kafka
  2. 反射修饰符 Modifier
  3. ADS1256驱动程序
  4. 用tnl实现高可信赖的对象同步机制
  5. [论文阅读] TGANet: Text-guided attention for improved polyp segmentation
  6. 24道互联网大厂最爱问智商题汇总|你能答对几道?(附带答案、详解)
  7. Mac系统安装--触摸板不能使用---故障分析
  8. java如何读取 回车_java文本框中读取回车
  9. 【c++】CTGU2022春校赛原题详解:出题人的大航海BFS
  10. 【开源电机驱动】如何计算电机参数