程序员智力题

1. 已知i为整数,d[i]表示i的正约数的和,已知10000除以1到10000所有整数的余数和为17743986,求1<=i<=10000范围内所有d(i)的和的末4位()

A 1774 B 3986  C 6014 D 8225

 解答:由题得  10000 = (10000 / x) *x +10000%x (1 ≤ x ≤ 10000), 这里遵从编程里的整数除法运算。
    故而 10000^2 - 17743986 = ∑ (10000 / x) *x 
    我们再看 ∑ d(i) = d(1)+d(2)+......d(10000) = 1*n1+2*n2+3*n3+......10000*n. 这里解释一下,1~10000约数之和的和可以看做是每一个约数×它在所有被除数中出现的次数。现在我们只要证明n=10000 / x就可以了。显然,对于任意正整数x<10000,它的小于10000的倍数的个数有10000 / x 个(这里还是整数除法运算),换言之,它在被除数中出现的次数就是10000 / x,故而 ∑ d(i)=10000^2 - 17743986,答案是C。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值