网易模拟的两道编程题求解

第一题:给你一个初始值x,每次移动到4*x+3或者8*x+7(x为每次移动到的当前位置,不是固定的x),但是你只能移动100000次,问最少多少次能移动到1000000007的位置?
例如:x=125000000,则8*x+7=1000000007,则只需移动1次即可

第二题:有m行n列的网格,每个网格放一个蛋糕,但是任意两个蛋糕(坐标分别为(x1,y1),(x2,y2))之间的距离不能等于 欧几里得距离: (x1-x2) 2 +(y1-y2) 2 , 问m行n列的网格最多可以放多少块蛋糕?
#网易##Java工程师##C++工程师##前端工程师##算法工程师#
全部评论
首先用1000000007%(4x+3)求出余数,假设余数是3,商是520,那么就可以从520中拿出两倍余数也就是6个 4*x+3和余数3一起换成余数个也就是3个 8*x+7,然后看商拿掉6个后有没有大于 8*x+7,大于就可以重复拿出 8*x+7个 4x+3 换成 4*x+3个 8*x+7,直到拿不出来,我是学前端的,如果你需要我可以写下程序给你看
点赞 回复 分享
发布于 2016-09-12 10:15
long f(long n) { if (n == x) return 0; return 1 + min(f((n - 3) / 4), f((n - 7) / 8)); }
点赞 回复 分享
发布于 2016-09-12 11:19
面试题么
点赞 回复 分享
发布于 2016-09-12 09:59

相关推荐

在写周报的打工人很独...:这个笔试昨天晚上做了一下,真难啊,前后端,ai全有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务