λ¬Έμ
-2μ§λ²μ λΆνΈ μλ 2μ§μλ‘ ννμ΄ λλ€. 2μ§λ²μμλ 20, 21, 22, 23μ΄ νν λμ§λ§ -2μ§λ²μμλ (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8μ νννλ€. 10μ§μλ‘ 1λΆν° νννμλ©΄ 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 λ±μ΄λ€.
10μ§λ²μ μλ₯Ό μ λ ₯ λ°μμ -2μ§μλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
## μ λ ₯
첫 μ€μ 10μ§λ²μΌλ‘ ννλ μ Nμ΄ μ£Όμ΄μ§λ€.
## μΆλ ₯
-2μ§λ² μλ₯Ό μΆλ ₯νλ€.
λλ¨Έμ§κ° 0λλ 1μ΄λμ€κ² νλκ²μ΄ ν΅μ¬μΈ λ¬Έμ μ΄λ€.
μλ‘ -13μ -2μ§μλ‘ λ³ννλ κ²½μ°λ₯Ό μ΄ν΄λ³΄λ©΄:
- -13 / -2 = 6, λλ¨Έμ§ -1 (10μ§μλ‘ -1, -2μ§μλ‘ 1)
- 6 / -2 = 3, λλ¨Έμ§ 0 (10μ§μλ‘ 0, -2μ§μλ‘ 0)
- 3 / -2 = 1, λλ¨Έμ§ -1 (10μ§μλ‘ -1, -2μ§μλ‘ 1)
- 1 / -2 = 0, λλ¨Έμ§ 1 (10μ§μλ‘ 1, -2μ§μλ‘ 1)
μκ° μ ν | λ©λͺ¨λ¦¬ μ ν | μ μΆ | μ λ΅ | λ§ν μ¬λ | μ λ΅ λΉμ¨ |
---|---|---|---|---|---|
2 μ΄ | 128 MB | 10786 | 5034 | 4140 | 45.700% |
https://www.acmicpc.net/problem/2089
νμ΄
μ΄λμ λ λ¬Έμ λ μκ² λλ°... ꡬνμ΄ μλμ μΈν°λ·μ μ°Ύμ보μλ€. κ·Έλ¦¬κ³ μ΄ν΄νκ²μ λ°νμΌλ‘ μ λ¦¬ν΄ λ³΄μλ€.
μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class λ§μ΄λμ€2μ§μ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb =new StringBuilder();
int n = Integer.parseInt(br.readLine());
if(n == 0){
System.out.println(0);
}else {
while (n != 0){
int remainder = n % -2;
n /= -2;
if(remainder < 0){ //λλ¨Έμ§κ° 0λ³΄λ€ μμΌλ©΄
remainder += 2; //λλ¨Έμ§ + 2 n++; //λͺ« + 1 }
sb.insert(0,remainder);
}
System.out.println(sb);
}
}
}
stackμ μ¬μ©ν΄μ νΈλκ²λ κ°λ₯ν κ²κ°κ³ ...μ¬κΈ°μλ StringBuilder.insert()
λ₯Ό μ΄μ©νμλ€. whileλ¬Έμ λλ©΄μ sb.insert(0,remainder);
0λ² indexμ remainderλ₯Ό λ£μ΄μ£Όλ λ°©μμ΄λ€.