我看题解似乎都用的循环求解,但我个人觉得用循环其实并不容易理解,而且时间复杂度很高.
本题其实就是把具体的时刻转换成在这一天中的第几秒.
所有我们可以通过推导h和m关于s的求和公式,从而使时间复杂度直接降到O(1).
求和公式大家有兴趣的可以自己推一下,我这里就直接给出了.
ll h(ll num)
{
ll sum = 10 * pow(num, 3) + 33 * pow(num, 2) + 29 * num + 6;
sum /= 6;
return sum;
}
ll m(ll num)
{
ll sum = 5 * pow(num, 2) + 6 * num + 1;
return sum;
}