luogu#P12147. 【MX-X11-T1】「蓬莱人形 Round 1」仅此而已,就已经足够了

【MX-X11-T1】「蓬莱人形 Round 1」仅此而已,就已经足够了

题目背景

原题链接:https://oier.team/problems/X11B


もうさ強がらなくてもいいんだよ\text{もうさ強がらなくてもいいんだよ} 過去の夜の涙ひとつ\text{過去の夜の涙ひとつ} それを柔く持って歩いて征く\text{それを柔く持って歩いて征く} それだけで今はいいんだよ\text{それだけで今はいいんだよ}

题目描述

定义 f(x)=x(x+2k)f(x)=x\oplus (x+2^k),其中 \oplus 是二进制下的异或运算。

给定两个整数 n,kn,k

请你输出 f(0)+f(1)+f(2)++f(n)f(0)+f(1)+f(2)+\cdots+f(n) 的值。

有关异或运算的知识,您可以在 OI Wiki 相关界面查询到。

输入格式

本题有多组数据。

第一行一个正整数 TT 表示数据组数。

接下来 TT 行,每行两个整数 n,kn,k

输出格式

输出有 TT 行,对每个询问输出答案。

9
3 0
15 0
9 4
3 6
17 28
9 16
8 23
15 11
4 11
12
80
160
256
4831838208
655360
75497472
32768
10240

提示

【样例解释 #1】

对于第一组样例,$f(0) = 0 \oplus (0+2^0) = 1,f(1) = 1 \oplus (1+2^0) = 3,f(2) = 2 \oplus (2+2^0) = 1,f(3) = 3 \oplus (3+2^0) = 7$,因此答案为 1+3+1+7=121+3+1+7=12

【数据范围】

对于 20%20\% 数据,n,T5000n,T \leq 5000

对于另外 20%20\% 数据,n105n \leq 10^5

对于另外 30%30\% 数据,k=0k = 0

对于 100%100\% 数据,1T1051\le T \leq 10^50n<2290\le n < 2^{29}0k290\le k \leq 29