WeChall - hi

Challenge

IRC 频道 #wechall,每分钟有一人加入并说 "hi",服务器将消息发送给频道中所有人(包括发送者)。经过 0xfffbadc0ded 分钟后,总共发送了多少条 "hi" 消息?无人离开频道。

3 分钟的例子:

  • 第 1 分钟:第 1 人加入发 hi(1),服务器回发给 1 人(1)→ 2 条
  • 第 2 分钟:第 2 人加入发 hi(1),服务器回发给 2 人(2)→ 3 条
  • 第 3 分钟:第 3 人加入发 hi(1),服务器回发给 3 人(3)→ 4 条
  • 总计:2 + 3 + 4 = 9 条

Solution

第 k 分钟发送 k+1 条消息(1 条来自加入者,k 条来自服务器转发)。n 分钟的总和为:

1
total = 1 + 2 + ... + (n+1) = n(n+3)/2
1
2
3
4
5
6
>>> n = 0xfffbadc0ded
>>> n
17591026060781
>>> total = n * (n + 3) // 2
>>> total
154722098935564539692256152
154722098935564539692256152