题号:NC54358
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述
身为算法协会的开创者之一,syc学长已经功成身退了,就在他退出算法协会的那一刻他穿越了!穿越后,他用他的数学知识征服了这里的原住民,然后他当上了国王。(什么?你也想穿越??)
在异世界,这里有一棵无限长的“世界树”。这棵世界树的每个结点连接下一层的两个结点,构成了一棵完整的二叉树。
syc为了展示自己的数学很牛,他为每个结点配置了一个数字。特别地,树的根就是syc居住的地方,记为froot=1。对每个结点u,标签是fu,左子结点是2*fu,右子节点是2*fu+1。syc对这棵树感到很满意。
随着时间流逝,syc命不久矣。他疯狂地寻找能延续自己生命的方法,终于,他找到了黑魔法!然而发动黑魔法需要N个幽灵宝石,如果syc能够收集N个幽灵宝石,他就可以再活N年。开始时,syc在世界树的根部,他拥有的宝石数量是0,然后他往下走,每次可以往左子结点或右子结点走。在结点x处,这个结点的数字是fx(记住froot=1),他可以选择将自己的幽灵宝石增加或减少fx。
然而syc不多不少只能访问K个node(包括根结点),在每一个结点处加上或减去fx最后数字为N,syc就成功了。
注意,由于幽灵宝石独特的魔法,其数字N也可以是负数。
输入描述:
第一行是一个整数T,表示测试用例个数。(1≤T≤100)
给定n,K,帮syc收集n个幽灵宝石,不多不少访问K个结点。(1≤n≤109)(n≤2K≤260)
输出描述:
对于每个测试用例,先输出“Case #x:”,其中x表示第几个用例,从1开始计数。
下面有K行,每行一个‘a,b’,a是syc访问的结点标签,b是‘+’或‘-’,表示加减a。
保证至少有一个结果成立,如果有很多成立,可以输出任何一个。
示例1
输出
复制
Case #1:
1 +
3 -
7 +
Case #2:
1 +
3 +
6 -
12 +