饥饿的小易(java)
【饥饿的小易】小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃。最开始小易在一个初始位置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.用命令方式运行以下代码的运行结果是(C) public class f{public static void main(String[] args){String foo1 = args[1];S ...
- 求解解救amaze问题求解饥饿的小易问题
求解饥饿的小易问题 题目描述 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者8 * ...
- 网易python笔试题_python 饥饿的小易(网易笔试题)
本周早些时候,学弟给我发了一道网易的笔试题,饥饿的小易,感觉有点意思-分享给大家 题目描述: 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前 ...
- 饥饿的小易(枚举+广度优先遍历(BFS))
题目描述 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者8 * x + 7.因为使 ...
- 饥饿的小易(分枝限界法)
一. 程序题(共1题,100分) (程序题) 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x ...
- java http get_「面小易-面经12」阿里巴巴Java方向面试题汇总(含答案)
简介: 从前几篇分享中能够看出,阿里不愧是"Java技术光明顶",无论是从Java方向的面经数量.质量,还是问题难度上来看,想要拿到阿里Java研发岗位的Offer,都需要面试者拥 ...
- java版小易准备去魔法王国采购魔法神器
牛客网算法题 网易java笔试题(Java语言写的算法) 题目描述如下: 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x ...
- 网易之小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性.需要根据给定的w,x,y,z,求出集合中一共有多少个元素。
import java.util.HashSet; import java.util.Scanner; import java.util.Set;/*** 小易最近在数学课上学习到了集合的概念,集合有 ...
- 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势
[小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小家java ...
- 刷题笔记之十 (小易的升级之路+找出字符串中第一个只出现一次的字符+洗牌+MP3光标位置)
目录 1.存取任意指定序号的元素和在最后进行插入和删除运算,利用顺序表存储最节省时间 2. 数据结构中具有记忆功能的是栈 3. 递归程序的优化一般为 尾递归优化 4.二叉树遍历,前中后序遍历用到的是栈 ...
最新文章
- Netty时间轮调度原理分析,再不了解你就out啦
- findbugs教程
- java游戏重新开始_问题1:java问题--某局小游戏结束后怎么重新开始?
- 小程序开发提示没有npm路径_百度小程序三个框架的各自的特点
- MTK 驱动(4)---MTK Android Driver知识大全
- python怎样切换到上一行_如何返回到python中的前一行?
- 云计算开发python_云计算开发学习笔记:Python的环境搭建
- 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南...
- 知乎网软件测试和识,扩容检测工具_闪迪东芝内存卡_金士顿内存卡 知乎
- java:记一次因时区导致出参和入参时差8小时前因后果
- Harvard (name and date) 论文引用格式
- markdown语法中的空格_MarkDown语法
- 百分比收益率和对数收益率
- 判断一个点是否在闭合曲线内
- 岳飞诗词集萃[zz]
- 游戏黑客圣经GHB1学习笔记 part1(1-5)
- PHP自适应小说网站源码深度SEO优化自动采集
- golang实现图片颜色反转、图片灰度、缩放、转为字符画
- jquery表格插件jqgrid
- 开源IoT操作系统Mynewt使用简介