#P13251. [GCJ 2014 #1B] New Lottery Game

    ID: 13071 远端评测题 3000~5000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2014分治记忆化搜索数位 DP位运算Google Code Jam

[GCJ 2014 #1B] New Lottery Game

Description

彩票系统正在改革!过去的彩票系统使用一台机器生成一个随机中奖号码。但由于作弊问题频发,如今彩票系统决定增加第二台机器。新的中奖号码将由这两台机器各自生成的随机数,进行按位与(bitwise AND)运算后得到。

要计算 XXYY 的按位与操作,将它们都转换为二进制表示;结果中每一位是 11 的前提是,XXYY 的对应位都为 11,否则为 00。在大多数编程语言中,XXYY 的按位与操作写作 X&YX \& Y

例如:

  • 旧机器生成的数字是 7=01117 = 0111
  • 新机器生成的数字是 11=101111 = 1011
  • 则中奖号码为 $(7 \text{ AND } 11) = (0111 \text{ AND } 1011) = 0011 = 3$。

通过这一改革,彩票公司期望能够减少虚假兑奖的情况。但不幸的是,该公司的一名员工泄露了以下信息:旧机器生成的随机数始终小于 AA,而新机器生成的随机数始终小于 BB

Catalina 想赢得这次彩票。她打算购买所有小于 KK 的非负整数。

现在,给定 AABBKK,Catalina 想知道共有多少种不同的方式,两台机器生成的数对能够使她中奖。

你能帮助她计算出这个数量吗?

Input Format

输入的第一行是测试用例的数量 TT。接下来 TT 行,每行包含三个整数 AABBKK

Output Format

对于每个测试用例,输出一行 "Case #x: y",其中 xx 是测试用例编号(从 11 开始),yy 是两台机器能生成使 Catalina 获胜的数对总数。

5
3 4 2
4 5 2
7 8 5
45 56 35
103 143 88
Case #1: 10
Case #2: 16
Case #3: 52
Case #4: 2411
Case #5: 14377

Hint

样例解释

以第一个测试用例为例,以下是可能由两台机器生成的、使 Catalina 获胜的 10 个数对(分别由旧机器和新机器生成):

$\langle 0,0\rangle,\ \langle 0,1\rangle,\ \langle 0,2\rangle,\ \langle 0,3\rangle,\ \langle 1,0\rangle,$
$\langle 1,1\rangle,\ \langle 1,2\rangle,\ \langle 1,3\rangle,\ \langle 2,0\rangle,\ \langle 2,1\rangle$

请注意,0,1\langle 0,1\rangle1,0\langle 1,0\rangle 是不同的数对。

另外,虽然机器可能生成 2,2\langle 2,2\rangle,但该数对不会使 Catalina 获胜,因为 (2 AND 2)=2(2 \text{ AND } 2) = 2,而她只购买了 0011

限制条件

  • 1T1001 \leq T \leq 100

小数据集(8 分)

  • 时间限制:60 3 秒
  • 1A10001 \leq A \leq 1000
  • 1B10001 \leq B \leq 1000
  • 1K10001 \leq K \leq 1000

大数据集(24 分)

  • 时间限制:120 5 秒
  • 1A1091 \leq A \leq 10^9
  • 1B1091 \leq B \leq 10^9
  • 1K1091 \leq K \leq 10^9

翻译由 ChatGPT-4o 完成。