POJ 1312 Numerically Speaking

题意:26进制与10进制互相转换。

题解:JAVA的BigInteger偷渡之。

import java.math.*;
import java.util.HashMap;
import java.util.Scanner;
class Main{
	static boolean isdigit(char x)
	{
		return x>='0'&&x<='9';
	}
	static void print(BigInteger x)
	{
		String s=x.toString();
		int len=s.length(),i=0;
		while(true)
		{
			System.out.print(s.charAt(i));
			i++;
			if(i==len)
				break;
			if((len-i)%3==0)
			{
				System.out.print(',');
			}
		}
		System.out.println();
	}
	public static void main(String[] args) 
	{
		Scanner cin=new Scanner(System.in);
		String s;
		BigInteger zero=new BigInteger("0");
		BigInteger mod=new BigInteger("26");
		while(cin.hasNext())
		{
			s=cin.next();
			if(s.charAt(0)=='*')
				break;
			if(isdigit(s.charAt(0)))
			{
				char ans[]=new char[100];
				int top=0;
				BigInteger x=new BigInteger(s);
				BigInteger y=x;
				while(x.compareTo(zero)!=0)
				{
					ans[top++]=(char) ('a'+x.mod(mod).intValue()-1);
					x=x.divide(mod);
				}
				for(int i=top-1;i>=0;i--)
					System.out.print(ans[i]);
				while(top<22)
				{
					System.out.print(' ');
					top++;
				}
				print(y);
			}
			else
			{
				BigInteger x=new BigInteger("0");
				int len=s.length();
				for(int i=0;i


你可能感兴趣的:(POJ 1312 Numerically Speaking)