i<=n,1<=n,k<=10^9
做这道题的感觉是,果然我的数学很弱。
引用道阻且长博客的分析:
这个题目貌似很简单。就是求 sum(k % i),其中 1 <= i <= n;给定 k 和 n,求这个和。
当然可以直接算,不过会超时,因为 k 和 n 可能很大。
当 k >= n 时,应该将商分组,组中的余数是连续的,可以利用等差数列直接求和。比如 k = 36,n = 17 时,分为以下几组:
36/1;
36/2;
36/3;
36/4;
36/5,
36/6;
36/7;
36/8, 36/9;
36/10, 36/11, 36/12;
36/13, 36/14, 36/15, 36/16, 36/17。