package com.interview.number;
/**
* http://saikatd.wordpress.com/author/saikatd/page/4/
* In a number system where 4 is not there, how do you convert such a number system to decimal
* Here basically we have base 9 and convert it to base 10. Just be careful when you convert
* anything from 5 to 9 because they are basically 4 to 8 in base 9 system. So subtract them
* by 1 when doing multiplications.
*/
public class NotIncluding4 {
public int number(int chinaNumber){
int result = 0;
int mul = 1;
while(chinaNumber > 0){
int r = chinaNumber % 10;
chinaNumber /= 10;
if(r == 4){
throw new IllegalArgumentException();
}
if(r >=5){
r--;
}
result += r*mul;
mul = mul*9;
}
return result;
}
public static void main(String args[]){
NotIncluding4 ni = new NotIncluding4();
System.out.print(ni.number(16));
}
}