S ( n ) = ∑ i = 1 n σ ( i ) S(n)=\sum\limits_{i=1}^n\sigma(i) S(n)=i=1∑nσ(i)
e g : σ ( 24 ) = 2 + 3 + 4 + 6 + 8 + 12 = 35 eg:\sigma(24)=2+3+4+6+8+12=35 eg:σ(24)=2+3+4+6+8+12=35
T ≤ 1000 , 0 ≤ n ≤ 2 e 9 T≤1000,0≤n≤2e9 T≤1000,0≤n≤2e9
input:
3
2
100
200000000
output:
Case 1: 0
Case 2: 3150
Case 3: 12898681201837053
solution:
对于 1 ~ n 里的每个数,我们枚举因子 2 到 n .
S
(
n
)
=
∑
i
=
2
n
(
n
i
−
1
)
S(n)=\sum\limits_{i = 2}^{n}{(\frac{n}i-1)}
S(n)=i=2∑n(in−1)
code
#include <iostream>
#include <cstdio>
#include <cmath>
#include <map>
using namespace std;
typedef long long ll;
const double eps = 1e-7;
const int MOD = 1e9 + 7;
const int N = 5e6 + 10;
ll solve(ll n, ll res = 0) {
for(ll i = 2, j; i <= n; i = j + 1) {
j = min(n, n / (n / i));
res += (i + j) * (j - i + 1) / 2 * ((n / i) - 1);
}
return res;
}
int main() {
int o, cases = 0;
scanf("%d", &o);
while(o --) {
ll n;
scanf("%lld", &n);
printf("Case %d: %lld\n", ++ cases, solve(n));
}
return 0;
}