3060141_wa.java

来自「北大大牛代码 1240道题的原代码 超级权威」· Java 代码 · 共 104 行

JAVA
104
字号
import java.util.*;
import java.io.*;
import java.math.*;

public class Main 
{
	static BigInteger nn[] = new BigInteger[257];

	private static String solve(String base) 
	{
		int i;
		
		for(i = 0; i < base.length(); i++)
		{
			if(base.charAt(i)!=' ')
			{
				base = base.substring(i);
				break;
			}
		}
		int cnt = 0;
		for(i = base.length()-1; i >= 0; i--)
		{
			if(base.charAt(i)!=' ')
			{
				base = base.substring(0,base.length()-cnt);
				break;
			}
			cnt++;
		}
		return base;
	
	}
	public static void main(String[] args) throws IOException
	{
		BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
		Scanner input = new Scanner (System.in);
		//Scanner cin = new Scanner (new FileInputStream("C.in"));
		String base;
		String tmp;
		char ch;
		int i;

		base = cin.readLine();
		base = solve(base);
		for(i = 0; i < base.length(); i++)
		{
			nn[base.charAt(i)] = BigInteger.valueOf(i);
		}
		while(true)
		{
			while((tmp = cin.readLine())!=null)
			{
				if(tmp.length()==0)
				{
					break;
				}
				tmp = solve(tmp);
				BigInteger ans = BigInteger.ZERO;
				ii:	for(i = base.length()-1; i > 0; i--)
				{
					ans = ans.add(calc(tmp,i+1));
					for(int j = 0; j < tmp.length(); j++)
					{
						if(tmp.charAt(j)==base.charAt(i))
						{
							break ii;
						}
					}
				}
				System.out.println(ans);
			}
			while(true)
			{
				if((tmp = cin.readLine())!=null)
				{
					return ;
				}
				
				if(tmp.length()!=0)
				{
					base = solve(tmp);
					for(i = 0; i < base.length(); i++)
					{
						nn[base.charAt(i)] = BigInteger.valueOf(i);
					}
				}
			}
		}
	}
	private static BigInteger calc(String tmp, int i) 
	{
		BigInteger b = BigInteger.valueOf(i);
		BigInteger ret = BigInteger.ZERO;
		
		for(i = 0; i < tmp.length(); i++)
		{
			ret = ret.multiply(b);
			ret = ret.add(nn[tmp.charAt(i)]);
		}
		return ret;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?