乍一看这个题,发现不就是匀加速直线运动么,于是写出了如下的代码:
#include <iostream>
using namespace std;
int d(int t);
int main()
{
int T;
cin >> T;
while(T--)
{
int t;
cin >> t;
cout << d(t) % 10000 << endl;
}
return 0;
}
int d(int t)
{
return t*(1+t);
}
//v = v0 + at
//a = 2m/s^2
//x = v0t + (1/2)a*t^2 = t + t*t
喜提WA,连样例都没过。~于是仔细一看,发现有坑。
这个速度的增加并不是随着时间均匀增加的,而是在每个单位时间结束时突变增加。
如下图所示,每秒走过的路程为等差数列,求和之~
AC代码如下:
#include <iostream>
using namespace std;
int d(int t);
int main()
{
int T;
cin >> T;
while(T--)
{
int t;
cin >> t;
cout << d(t) % 10000 << endl;
}
return 0;
}
int d(int t)
{
return t*t;
}