寻花问柳之花朵数

.



package softwareDesign;

/**
 * 题目:
 * 
 * 一个N位的十进制正整数,
 * 
 * 如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数.
 * 
 * 比如:1^3+5^3+3^3=153;1^4 + 6^4 + 3^4 + 4^4 = 1634
 * 
 * @author [email protected] @date: 2011-5-5
 * 
 */
public class FindFlower {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		findFlowerInDomain(3);
		findFlowerInDomain(4);
		findFlowerInDomain(5);
	}

	/**
	 * 在domain范围内寻花问柳
	 * 
	 * @param domain
	 *            数据区域
	 */
	private static void findFlowerInDomain(int domain) {

		for (int index = (int) Math.pow(10, domain - 1); index < Math.pow(10,
				domain); index++) {
			String tempStr = String.valueOf(index);// 数字转换成的字符串
			char tempChar;// 字符串的某一个字符
			int charToIntValue = 0;// 字符转换成整数的值
			int tempAllCharsValue = 0;// 全部字符domain次方后的和
			for (int strIndex = 0; strIndex < tempStr.length(); strIndex++) {
				tempChar = tempStr.charAt(strIndex);
				charToIntValue = Integer.parseInt(String.valueOf(tempChar));
				tempAllCharsValue += (int) Math.pow(charToIntValue, domain);
				if (tempAllCharsValue == index
						&& strIndex == tempStr.length() - 1) {
					// 值相等而且次数相等才输出
					// System.out.println("flowerNumber:" + index);
					printFlowerNumber(tempStr, domain, index);
				}
			}
		}

	}

	/**
	 * 控制打印输出,比如:1^3+5^3+3^3=153;1^4 + 6^4 + 3^4 + 4^4 = 1634
	 * 
	 * @param str
	 *            用于输出的字符串
	 * @param domain
	 *            数的domain次方
	 * @param result
	 *            式子的结果
	 * 
	 */
	private static void printFlowerNumber(String str, int domain, int result) {
		StringBuffer sb = new StringBuffer();
                sb.append("flowerNumber:");
		for (int i = 0; i < str.length() - 1; i++) {
			sb.append(str.charAt(i)).append("^").append(domain).append("+");
		}
		sb.append(str.charAt(str.length() - 1)).append("^").append(domain);
		System.out.println(sb.toString() + "=" + result);
	}
}




输出结果:


flowerNumber:1^3+5^3+3^3=153
flowerNumber:3^3+7^3+0^3=370
flowerNumber:3^3+7^3+1^3=371
flowerNumber:4^3+0^3+7^3=407
flowerNumber:1^4+6^4+3^4+4^4=1634
flowerNumber:8^4+2^4+0^4+8^4=8208
flowerNumber:9^4+4^4+7^4+4^4=9474
flowerNumber:5^5+4^5+7^5+4^5+8^5=54748
flowerNumber:9^5+2^5+7^5+2^5+7^5=92727
flowerNumber:9^5+3^5+0^5+8^5+4^5=93084






.

你可能感兴趣的:(.net)