class="java">
package test;
public class Test {
	/**
	 *其效率比常规算法效率缩短1/3
	 *其为一种简单实现,必然存在更优算法
	 *算法实现来自一道编程题:
	 *已知abc+cba=1333,其中a,b,c均为一位数。
	 *编程求出满足条件的a,b,c的所有组合。
	*/
	public static void main(String[] args) {
		//用户输入的一个数
		int num = 122531;
		//统计有几种方案
		int count = 0;
		//通过算法定义循环从哪个数开始
		final int start = start(num);
		//通过算法定义循环从哪个数结束
		final int end = end(num);
		//打印出符合条件的结果
		for (int i = start; i <= end; i++) {
			if((i+result(i))==num){
				count++;
				System.out.println(i+"+"+result(i)+"="+num);
			}
		}
		System.out.println("共有"+count+"种方案");
	}
	
	public static int start(int num){
		int x = num/3;
		int l = String.valueOf(x).length();
		int value = 1;
		for (int i = 1; i < l; i++) {
			value = 10*value;
		}
		return x-value;
	}
	
	public static int end(int num){
		int x = num/3;
		int l = String.valueOf(x).length();
		int value = 1;
		for (int i = 1; i <= l; i++) {
			value = 10*value;
		}
		return value-1;
	}
	
	public static int result(int x){
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < String.valueOf(x).length(); i++) {
			sb.append(String.valueOf(x).charAt(i));
		}
		int y = Integer.parseInt(sb.reverse().toString());
		return y;
	}
}