topcoder--与7相关的数:java 实现

package chow.test;

/**
 * @author Chow
 * @date Jun 4, 2010
 * @Description 一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,
 * 则称其为与7相关的数.现求所有小于等于n(n<100)的与7无关的正整数的平方和.
 */

public class TestRel7 {
	public static void main(String[] args){
		long num = 21;
		long sum = 0;
		int toSub = 0;
		long beginTime = System.currentTimeMillis();
		while(num > 0){
			if(num % 7 == 0){
				num--;
				continue;
			}else if((toSub = contain7(num)) != 0){
				//num包含7
				num -= toSub;
				continue;
			}
			sum += num*num;
			num--;
		}
		long endTime = System.currentTimeMillis();
		System.out.println(sum + " Time:" + (endTime - beginTime));
	}
	
	/**
	 * 从低位开始检查,是否包含数字7,若包含返回最后一个包含7的位数的位值
	 * @param num 待检测的数
	 * @return 0代表不包含7,若最后一位是7的在百位上,则返回100
	 */
	public static int contain7(long num){
		int toSub = 0;
		int count = 1;
		do{
			if(num % 10 == 7){
				toSub = count;
			}
			count *= 10;
			num /= 10;
		}while(num > 0);
		return toSub;
	}
}
 

你可能感兴趣的:(java)