amozon 发表于 2013-1-27 05:16:56

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 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;for(int i = 0;i < inputSize;i ++) {numInputSystem] = i;}int x = 0;for(int i = 0;i < alienNum.length;i ++) {x = (x * inputSize) + numInputSystem];}//Decimal NumberSystem.out.println(x);StringBuilder output = new StringBuilder();while(x != 0) {StringBuilder temp = new StringBuilder();output = temp.append(outputSystem).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 <iostream>#include <algorithm>#include <cstring>#include <cstdlib>#include <vector>#include <string>#include <set>#include <map>#include <queue>#include <bitset>#include <cctype>#define int64 long long#define ii pair<int,int>#define vi vector<int>#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<class T> T abs(T x){return x>0 ? x:(-x);}template<class T> T sqr(T x){return x*x;}int num1,num2;int c1,c2;int main(){int n;cin >> n;for(int ic=0;ic<n;ic++){memset(num1,-1,sizeof(num1));string s,s1,s2;cin >> s >> s1 >> s2;for(int i=0;i<sz(s1);i++)num1]=i;for(int i=0;i<sz(s2);i++)num2]=i;c1=sz(s1);c2=sz(s2);int64 x=0;for(int i=0;i<sz(s);i++){if(num1]==-1) while(1);x=(x*(int64)c1)+(int64)(num1]);}string ss;if(!x) ss+=s2;while(x){ss=s2+ss;x/=c2;}cout << "Case #" << ic+1 << ": " << ss << "\n";}return 0;}
页: [1]
查看完整版本: Alien Numbers