AOJ0208 Room Numbers of a Hospital

問題リンク Room Numbers of a Hospital

  • 解法

4と6が使えないので新部屋番号は[0, 1, 2, 3, 4, 5, 6, 7]を[0, 1, 2, 3, 5, 7, 8, 9]のように表す8進数として考えることができます。
与えられたnが15のとき、1*8^1 + 7*8^0となるので、8進数だと17となります。更に、これらの1と7は、新部屋番号の数字の世界では1は1、7は9と表されるので新部屋番号は19と求めることができます。

  • ソース
import java.util.Scanner;

//Room Numbers of a Hospital
public class AOJ0208 {

	static int[] t = {0,1,2,3,5,7,8,9};
	
	static void f(int n){
		if(n>=8)f(n/8);
		System.out.print(t[n%8]);
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(true){
			int n = sc.nextInt();
			if(n==0)break;
			f(n);
			System.out.println();
		}
	}
}