问题:
有两台机器可以通过投入x(x可以为0)个币产生更多的币。
- 机器1:如果投入x个币,机器会将其变为2x+1个币
- 机器2:如果投入x个币,机器会将其变为2x+2个币
输入描述:
输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示需要的币数量。
输出描述:
输出一个字符串,每个字符表示该次选取投入的机器。其中只包含字符'1'和'2'。
比如:
输入:
10
输出:
122
思路:
如果使用机器1,则它的下一次输出一定是奇数,如果使用机器2,则它的下一次输出一定是偶数。所以通过最后得到的n的奇偶性往前推,如果时奇数就执行 (n-1)/2 迭代运算, 如果是偶数就执行 (n-2)/2 迭代运算,直到n = 0为止,输出经过的机器的顺序的倒序即可。
JS代码:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let n;
let result = '';
rl.on('line', (line) => {
n = Number(line);
cal(n);
console.log(result.split('').reverse().join(''));
});
function cal(N) {
if(N > 0){
if(N%2){
if(((N-1)/2)===0) {
result=result+'1';
} else {
result=result+'1';
cal((N-1)/2);
}
} else {
if(((N-2)/2)===0) {
result=result+'2';
} else {
result=result+'2';
cal((N-2)/2);
}
}
}
}
代码已检测,通过率 100%。
问题状态:
已解决 √