我當時怎麼不知道有這麼水的題。。。
題意:給一個範圍[a,b],求區間內整數的立方和。弱弱的再吐槽一下:當時怎麼沒發現
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define ll __int64
int main()
{
ll a, b;
int t;
scanf("%d", &t);
int ans = 1;
while(t--)
{
ll sum = 0, i;
scanf("%I64d%I64d", &a, &b);
for(i=a; i<=b; ++i)
sum += i*i*i;
printf("Case #%d: %I64d\n", ans++, sum);
}
return 0;
}
可能是數據太水,用數學公式計算和上面的效率是一樣的:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define ll __int64
ll get3(ll n)
{
ll x = n*(n+1)/2;
return x * x;
}
int main()
{
ll a, b;
int t;
scanf("%d", &t);
int ans = 1;
while(t--)
{
ll sum = 0, i;
scanf("%I64d%I64d", &a, &b);
if(!a) a = 1;
printf("Case #%d: %I64d\n", ans++, get3(b)-get3(a-1));
}
return 0;
}