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(); } } }