Alien Numbers

阅读更多
Google Code Jam 2008 Practice one

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 
#include 
#include 
#include 

#define int64 long long
#define ii pair
#define vi vector
#define mp make_pair
#define pb push_back
#define all(v) (v).begin(),(v).end()
#define sz(v) ((int)(v.size()))

using namespace std;

template T abs(T x){return x>0 ? x:(-x);}
template T sqr(T x){return x*x;}

int num1[300],num2[300];
int c1,c2;

int main()
{
	int n;
	cin >> n;
	for(int ic=0;ic> s >> s1 >> s2;
		for(int i=0;i 
 

你可能感兴趣的:(Google,C,C++,C#)