網易2017年校招題
阿新 • • 發佈:2019-02-07
小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩臺魔法機器可以通過投入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();
}
}