package com.itjob.algorithm;

/**
 * 第5章 数据结构与算法
 * 考题：打印出所有的“水仙花数”，所谓“水仙花数”是指一个三位数，其各位数字立方和等于该数本身。
 *      例如：153是一个“水仙花数”，因为：153=1的三次方＋5的三次方＋3的三次方
 * @author AmigoXie
 */
public class DaffodilNumber {
	public static void main(String args[]) throws Exception {
		new DaffodilNumber().print();
	}

	/**
	 * 打印输出结果
	 */
	public void print() {
		// 三位数：100->999，共900个数字
		int[] numbers = new int[900];
		int temp = 100;
		for (int i = 0; i < 900; i++) {
			numbers[i] = temp + i;
		}

		for (int i = 0; i < 900; i++) {
			int[] list = splitNumber(String.valueOf(numbers[i]));
			int count = list[0]*list[0]*list[0] + list[1]*list[1]*list[1] + list[2]*list[2]*list[2];
			if (count == numbers[i]) {
				System.out.println(count);
			}
		}
	}

	/**
	 * 拆分三位数并保存到一个整型数组里
	 */
	public int[] splitNumber(String s) {
		String str = s;
		int[] list = new int[3];
		list[0] = Integer.parseInt(str.substring(0, 1));
		list[1] = Integer.parseInt(str.substring(1, 2));
		list[2] = Integer.parseInt(str.substring(2, 3));
		return list;
	}
}
