zoukankan      html  css  js  c++  java
  • 网易校招2018----题目1----魔法币

    题目描述:小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
    魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
    魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
    小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。 

    小技巧:本来我列举了下,感觉找到规律了:1,2,11,12,21,22,111,112.....

    想了用二进制替换什么的,没有想到具体怎么实现.有点沮丧.

    不过规律是2*x的值一定是偶数,那么2*x+1就一定是奇数,2*x+2一定是偶数.

    想到这儿就容易了:判断一下输入的n是偶数还是奇数,然后一层层扒皮.

    最后得逆转过来.

    啊,丑陋的代码.

    package wangyi_2018campus;
    
    import java.util.Scanner;
    
    /**
     * Created by Ramble on 2017/11/13.
     */
    public class MagicMoney {
        static StringBuffer str = new StringBuffer();
        public static void getMagicMoney(int n) {
            while (n>0) {
            if (n%2==0) {
                str.append("2");
                n = (n-2)/2;
            } else if(n%2==1) {
                str.append("1");
                n = (n-1)/2;
            }
            else {
                System.out.println("Wrong input");
             }
        }
    }
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int n = scanner.nextInt();
            getMagicMoney(n);
            System.out.println(str.reverse());
        }
    }
  • 相关阅读:
    在web大作业中曾经遇到的程序测试案例…
    软件测试技术 hw3
    软件测试技术 hw2
    软件测试技术 上机实验1
    软件项目管理 hw1
    软件测试技术 hw1
    软件测试技术-第七题
    软件测试技术 上机实验1
    软件测试技术 homework2
    软件项目管理 homework1 曾经做过的project
  • 原文地址:https://www.cnblogs.com/R4mble/p/7828413.html
Copyright © 2011-2022 走看看