1 条题解
-
0
自动搬运
来自洛谷,原作者为

cff_0102
& aqua_qaq | 团子群 185800038 | 如果我死了说明我 AFO 了搬运于
2025-08-24 21:15:31,当前版本为作者最后更新于2023-12-27 21:50:29,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题解区怎么没有纯数学解法。
这道题,可以先分别计算出起始时刻和结束时刻是一天当中的第几秒,然后再作差,就能直接得到答案。
已知有一个时刻是 ,怎么计算出它是一天中的第几秒呢?
首先,把这个时刻拆成 个小时, 分钟和 秒。
由题意得,某一小时的第 分钟共有 秒,则某一小时从第 分钟到第 分钟(共 分钟)就一共过去了 $(10\times0+1)+(10\times1+1)+(10\times2+1)+\dots+(10b+1)$ 秒。根据等差数列求和公式,这个算式的结果是 $\dfrac{(10\times0+1+10b+1)\times(b+1)}{2}=5b^2+6b+1$。
由题意得,一天中的第 小时共有 分钟(从第 分钟到第 分钟),根据上面的计算,则这一小时共有 秒。从第 个小时到第 个小时(共 个小时)就一共过去了 $(5\times0^2+6\times0+1)+(5\times1^2+6\times1+1)+\dots+(5a^2+6a+1)$ 秒。把它们拆开,变成 $5\times(0^2+1^2+\dots+a^2)+6\times(0+1+\dots+a)+(1+1+\dots+1)$,分别代入平方和公式、等差数列求和公式和项数 ,得到原式等于 $\dfrac{5a(a+1)(2a+1)}{6}+3a(a+1)+(a+1)=\dfrac{10a^3+33a^2+29a+6}{6}$。
然后把它们相加,设 表示 是一天中的第几秒:
$$f(a,b,c)=\dfrac{10(a-1)^3+33a^2+29a+6}{6}+5b^2+6b+c+2 $$则此题的答案为:。
如果这个数为负数,就说明这个时间范围跨了一天。所以输出答案的时候还需要先将其加上一天的秒数,再取模,得到一个范围在 和一天秒数之间的数,那就是答案。
def f(a,b,c): return (10*a*a*a+33*a*a+29*a+6)//6+5*b*b+6*b+c+2 t=int(input()) while t: t-=1 n,A,B,C,E,F,G=input().split() n,A,B,C,E,F,G=(int(n),int(A),int(B),int(C),int(E),int(F),int(G)) tmp=f(n-1,0-1,0-1) print((f(E-1,F-1,G-1)-f(A-1,B-1,C-1)+tmp)%tmp)
- 1
信息
- ID
- 9198
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者