菜菜

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
import java.io.*;
import java.util.*;

public class Main
{
	public static void main(String[] args) throws FileNotFoundException
	{
		// Scanner scanner = new Scanner(new File("d://1.txt"));
		Scanner scanner = new Scanner(System.in);
		while (scanner.hasNextLine())
		{
			String str1 = scanner.nextLine();
			String str2 = scanner.nextLine();
			System.out.println(sub(str1, str2));
		}
		scanner.close();
	}

	public static String sub(String str1, String str2)
	{
		int minLength = -1;
		int maxLength = -1;
		if (str1.length() > str2.length())
		{
			minLength = str2.length();
			maxLength = str1.length();
		}
		else
		{
			minLength = str1.length();
			maxLength = str2.length();
			String temp = str1;
			str1 = str2;
			str2 = temp;
		}
		// 俩个数相减后剩下的最大长度
		char cc[] = new char[maxLength];
		// 大数减小数,好像负号和减法并没有关系
		int dx = 0;
		int cIndex = 0;
		int dl = maxLength - minLength;
		for (int i = minLength - 1; i >= 0; i--)
		{
			int s = str1.charAt(i + dl) - str2.charAt(i) - dx;
			dx = 0;
			if (s < 0)
			{
				dx = 1;
				s += 10;
			}
			cc[cIndex++] = (char) (s + '0');
		}
		for (int i = maxLength - cIndex-1; i >= 0; i--)
		{
			int s = str1.charAt(i) - '0' - dx;
			dx = 0;
			if (s < 0)
			{
				dx = 1;
				s += 10;
			}
			cc[cIndex++] = (char) (s + '0');
		}
		if(cc[cIndex - 1] == '0')
		{
			return "0";
		}
		StringBuilder sb = new StringBuilder();
		for (int i = cIndex - 1; i >= 0; i--)
		{
			sb.append(cc[i]);
		}
		return sb.toString();
	}

	public static String mul(String str1, String str2)
	{
		int minLength = -1;
		int maxLength = -1;
		if (str1.length() > str2.length())
		{
			minLength = str2.length();
			maxLength = str1.length();
		}
		else
		{
			minLength = str1.length();
			maxLength = str2.length();
			String temp = str1;
			str1 = str2;
			str2 = temp;
		}
		int[] cc = new int[maxLength + minLength];
		int maxIndex = -1;
		for (int i = minLength - 1; i >= 0; i--)
		{
			char c2 = str2.charAt(i);
			int cIndex = minLength - 1 - i;
			int dx = 0;
			for (int j = maxLength - 1; j >= 0; j--)
			{
				cc[cIndex] = (str1.charAt(j) - '0') * (c2 - '0') + dx
						+ cc[cIndex];
				dx = cc[cIndex] / 10;
				cc[cIndex] = cc[cIndex] % 10;
				cIndex++;
			}
			if (maxIndex < cIndex)
			{
				maxIndex = cIndex;
			}
			cIndex = maxIndex;
			if (dx != 0)
			{
				while (dx != 0)
				{
					cc[cIndex] = cc[cIndex] + dx;
					dx = cc[cIndex] / 10;
					cc[cIndex] = cc[cIndex] % 10;
					cIndex++;
				}
				maxIndex = cIndex;
			}
		}
		StringBuilder sb = new StringBuilder();
		for (int i = maxIndex - 1; i >= 0; i--)
		{
			if (cc[i] == 0 && i == maxIndex - 1)
			{
				return "0";
			}
			sb.append((char) (cc[i] + '0'));
		}
		return sb.toString();
	}

}

  

posted on 2017-01-21 11:13  好吧,就是菜菜  阅读(191)  评论(0编辑  收藏  举报