面试算法收集(网易)一
来源:互联网 发布:最好的拼图软件 编辑:程序博客网 时间:2024/04/29 07:13
小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。
输入描述:
输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示小易需要的魔法币数量。
输出描述:
输出一个字符串,每个字符表示该次小易选取投入的魔法机器。其中只包含字符’1’和’2’。
输入例子:10
输出例子:122(投入一号机器0个,生产出1个魔法币,把一个魔法币投入2号机器生产出4个魔法币,把四个魔法币投入2号机器然后生产出十个魔法币)
解题思路:魔法机器1只能产生奇数,魔法机器2只能产生偶数。从n不断按奇偶倒推回0就可以了。
java代码实现:
public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { int coinCount = in.nextInt(); StringBuilder sb = new StringBuilder(); while (coinCount > 0) { if (coinCount % 2 == 0) { //偶数 coinCount = (coinCount - 2) / 2; sb.append("2"); } else { //奇数 coinCount = (coinCount - 1) / 2; sb.append("1"); } } System.out.println(sb.reverse().toString()); } }}
c代码实现:
#include <stdio.h>int n;void read() { scanf("%d", &n);}void magic(int n) { if (n <= 0) return; if (n & 1) { magic((n - 1) / 2); putchar('1'); } else { magic((n - 2) / 2); putchar('2'); }}void work() { magic(n); putchar('\n');}int main() { read(); work(); return 0;}
阅读全文
0 0
- 面试算法收集(网易)一
- 面试算法收集(网易)二
- 网易面试题目(收集)
- 网易面试题目(收集)
- 网易面试收集之一
- BAT、网易面试经验收集
- 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理(1)
- 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理(2)
- 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理(3)
- 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理(4)
- 网易面试(1)
- 面试算法总结(一)
- 面试算法题(一)
- 网易&拼多多 算法岗内推面试小结
- 收集的一些算法题(面试专用)
- 个人找工作中的软件测试面试题目收集(一)
- 网易面试(C++基础)
- 2017网易面试(java)
- 关于学习软件工程(C编码实践)课程的感想
- nginx常用命令
- 生产者消费者模式(ConcurrentHashMap)
- 史上第二走心的 iOS11-Drag & Drop 教程
- POJ 2299 Ultra-QuickSort——离散化+线段树求逆序数
- 面试算法收集(网易)一
- 转载:你刚才在淘宝上买了一件东西
- 【云栖精选9月刊】云端数据库未来发展趋势:机遇与挑战并存
- 基于Maven工程搭建SSM框架,并整合velocity模板语言
- 奥威Power-BI物流行业BI解决方案——全段兑现分析
- VC/MFC——如何设置对话框背景颜色
- 30分钟学会如何使用Shiro
- 两个haoop集群之间迁移数据:
- MyBatis使用Integer(切入源码分析)