#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAXN = 5e5 + 20; long long mod = 1 << 32; long long val[MAXN], dp[MAXN]; void cal(int n) { for(long long i = 1; i < n; i++) { for(long long j = i;j < n; j += i) val[j] += (j/i +1) * (j/i) / 2; } } void init() { memset(val, 0,sizeof val); cal(MAXN); dp[1] = 1; for(long long i = 2; i < MAXN; i++) { dp[i] = dp[i-1] + val[i] * i; dp[i] %= mod; } } int main() { init(); int cas = 1; int T; scanf("%d", &T); while(T--) { int n; scanf("%d", &n); printf("Case #%d: %lld\n", cas++, dp[n]); } return 0; } |
Double click to view unformatted code.