22娘和33娘接到了小電視君的扭蛋任務:
一共有兩臺扭蛋機,編號分別爲扭蛋機2號和扭蛋機3號,22娘使用扭蛋機2號,33娘使用扭蛋機3號。
扭蛋機都不需要投幣,但有一項特殊能力:
扭蛋機2號:如果塞x(x範圍爲>=0正整數)個扭蛋進去,然後就可以扭到2x+1個
扭蛋機3號:如果塞x(x範圍爲>=0正整數)個扭蛋進去,然後就可以扭到2x+2個
22娘和33娘手中沒有扭蛋,需要你幫她們設計一個方案,
兩人“輪流扭”(誰先開始不限,扭到的蛋可以交給對方使用),
用“最少”的次數,使她們能夠最後恰好扭到N個交給小電視君。
輸入
輸入一個正整數,表示小電視君需要的N個扭蛋。 10
輸出
輸出一個字符串,每個字符表示扭蛋機,字符只能包含"2"和"3"。 233
輸入:10
輸出:233
思路:正向向上加到 N,比較難辦到;但是倒着想,就好辦多了;
首先肯定是優先3號機,N減小得快;
10 = 2 * 4 + 2; 3
4 = 2 * 1 + 2;3
1 = 2 * 0 + 1; 2
11 = 2 * 5 + 1; 2
5 = 2 * 2 + 1; 2
2 = 2 * 0 + 2; 3
是不是有想法了
public static void main(String[] args) {
/* Scanner sc = new Scanner(System.in);
int N = sc.nextInt();*/
int N = 1232;
StringBuilder builder = new StringBuilder();
help(N,builder);
System.out.println(builder.reverse().toString());
}
public static void help(int n, StringBuilder builder) {
if (n <= 0) {
return;
}
if (n % 2 == 0) {
builder.append("3");
help((n - 2) / 2, builder);
} else {
builder.append("2");
help((n - 1) / 2, builder);
}
}
最後再把拿到的數字倒序輸出就OK了