题解 SP11560 【PUCMM210 - A Summatory】

本题还是很简单,但要注意开 long long,就因为没开卡了几次!

思路:

用前缀和每次推算出i=1ni3\Large \sum_{i = 1}^n i ^ 3,然后开另外一个前缀和数组统计i=1nf(i)\Large \sum_{i = 1}^n f(i)

代码:

#include <iostream>
using namespace std;

unsigned long long a[1000005], ans[1000005];

const unsigned long long Mod = 1000000003;

int main()
{
    for(register long long i = 1; i <= 1000000; i++) {a[i] = (a[i - 1] % Mod + (i * i % Mod * i % Mod)) % Mod; ans[i] = (ans[i - 1] + a[i]) % Mod;} // 循环一定要开long long
    int T;
    cin >> T;
    while(T--)
    {
        int n;
        cin >> n;
        cout << ans[n] % Mod << endl;
    }
    return 0;
}

还有就是限时 437ms,我 840ms 为什么过了!

posted @ 2021-01-03 10:19  HappyBobb  阅读(8)  评论(0)    收藏  举报  来源