1. 程式人生 > >網易2017年校招題

網易2017年校招題

小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩臺魔法機器可以通過投入x(x可以為0)個魔法幣產生更多的魔法幣。魔法機器1:如果投入x個魔法幣,魔法機器會將其變為2x+1個魔法幣魔法機器2:如果投入x個魔法幣,魔法機器會將其變為2x+2個魔法幣小易採購魔法神器總共需要n個魔法幣,所以小易只能通過兩臺魔法機器產生恰好n個魔法幣,小易需要你幫他設計一個投入方案使他最後恰好擁有n個魔法幣。
輸入描述:
輸入包括一行,包括一個正整數n(1 ≤ n ≤ 10^9),表示小易需要的魔法幣數量。
輸出描述:
輸出一個字串,每個字元表示該次小易選取投入的魔法機器。其中只包含字元’1’和’2’。
輸入例子1:
10
輸出例子1:
122

import java.util.*;
public class Magic {
    public static void main(String[] args) {
        int a;
        String p = "";
        Scanner s = new Scanner(System.in);
        a = s.nextInt();
        p = check(a,p);
        String[] str1 = p.split("");
        StringBuilder str2 = new StringBuilder();
        for
(int i = str1.length - 1;i >= 0;i--) { str2.append(str1[i]); } System.out.println(str2); s.close(); } public static String check(int i,String c) { while(i > 0) { if(i % 2 == 0) { c += '2'; i = (i - 2
)/2; }else if(i % 2 == 1){ c += '1'; i = (i - 1)/2; }else { break; } } return c; } }

為了得到一個數的”相反數”,我們將這個數的數字順序顛倒,然後再加上原先的數得到”相反數”。例如,為了得到1325的”相反數”,首先我們將該數的數字順序顛倒,我們得到5231,之後再加上原先的數,我們得到5231+1325=6556.如果顛倒之後的數字有字首零,字首零將會被忽略。例如n = 100, 顛倒之後是1.
輸入描述:
輸入包括一個整數n,(1 ≤ n ≤ 10^5)
輸出描述:
輸出一個整數,表示n的相反數
輸入例子1:
1325
輸出例子1:
6556

import java.util.*;

public class OppositeNumber {

    public static void main(String[] args) {

        int a,b;
        Scanner s = new Scanner(System.in);
        a = s.nextInt();
        String str1 = a + "";
        String[] str2 = str1.split("");
        StringBuilder str3 = new StringBuilder();
        for(int i = str2.length - 1;i >=0;i--) {
            str3.append(str2[i]);
        }
        String c = str3.toString();
        b = Integer.parseInt(c);
        System.out.println(a + b);
        s.close();
    }
}