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;
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值