http://code.google.com/codejam/contest/dashboard?c=agdjb2RlamFtcg4LEghjb250ZXN0cxh5DA
Arbitrary size numberal system conversion
1. numInputSystem[inputSystem[i]], inputSystem[i] is a char, actually converts to ASC2 in this array.
These 94 signals or numbers are consistent ASC2 codes.
2. Converts to decimal at first.
Java code:
public class CodeJam1 { public static void convertSystem(char[] alienNum, char[] inputSystem, char[] outputSystem) { int inputSize = inputSystem.length; int outputSize = outputSystem.length; int[] numInputSystem = new int[300]; for(int i = 0;i < inputSize;i ++) { numInputSystem[inputSystem[i]] = i; } int x = 0; for(int i = 0;i < alienNum.length;i ++) { x = (x * inputSize) + numInputSystem[alienNum[i]]; } //Decimal Number System.out.println(x); StringBuilder output = new StringBuilder(); while(x != 0) { StringBuilder temp = new StringBuilder(); output = temp.append(outputSystem[x % outputSize]).append(output); x /= outputSize; } System.out.println("Case #1: " + output.toString()); } public static void main(String[] args) { char[] alienNum = "CODE".toCharArray(); char[] inputSystem = "O!CDE?".toCharArray(); char[] outputSystem = "A?JM!.".toCharArray(); // char[] alienNum = "2".toCharArray(); // char[] inputSystem = "0123456789".toCharArray(); // char[] outputSystem = "01".toCharArray(); // char[] alienNum = "10".toCharArray(); // char[] inputSystem = "01".toCharArray(); // char[] outputSystem = "0123456789".toCharArray(); CodeJam1.convertSystem(alienNum, inputSystem, outputSystem); } }
C code
#include#include #include #include #include #include #include #include