题解 SP11560 【PUCMM210 - A Summatory】
本题还是很简单,但要注意开 long long,就因为没开卡了几次!
思路:
用前缀和每次推算出,然后开另外一个前缀和数组统计。
代码:
#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 为什么过了!

浙公网安备 33010602011771号