问题 H: 利物浦集合

内存限制:525 MB 时间限制:4 S
题面:传统 评测方式:文本比较 上传者:
提交:1 通过:1

题目描述

对于 n,m,kn,m,k,一个长度为 nn 的整数数列 a1,a2,a3,⋯,ana1,a2,a3,,an 如果满足下面的所有条件,则称它为利物浦集合。

  1. 0≤a1≤a2≤a3≤⋯≤an<2m0a1a2a3an<2m
  2. ⊕i=1nai=0i=1nai=0,其中  表示二进制按位异或。
  3. 对于所有整数 ii1≤i≤n−k1ink),ai≠ai+kai=ai+k

记函数 f (n,m,k)f (n,m,k) 表示对于 n,m,kn,m,k 的不同利物浦集合的个数 对 10000000071000000007 取模后的值

你的目标是计算一些与函数 ff 有关的值。具体内容见 输入/输出格式。

输入格式

本题包含多组测试数据。

首先在第一行输入一个整数 TT1≤T≤1001T100)表示测试数据组数。

对于每一组测试数据,输入包含两行。

第一行包含三个整数 n1,m1,k1n1,m1,k11≤n1≤1071n11071≤∑n1≤6×1071n16×1071≤m1≤231m1231≤k1≤n11k1n1)。

第二行包含两个整数 n2,m2n2,m21≤n2≤1061n21061≤∑n2≤1071n21071≤m2≤231m223)。

输出格式

对于每一组测试数据,输出包含两行。

第一行包含一个整数表示 f (n1,m1,k1)f (n1,m1,k1)

第二行包含两个整数 xor,sumxor,sum,分别表示所有 f (n2,m2,i)f (n2,m2,i)1≤i≤n21in2)的异或和,和所有 f (n2,m2,i)2f (n2,m2,i)21≤i≤n21in2)的和对 10000000071000000007 取模后的值。

具体地,xor,sumxor,sum 满足以下条件:xor=⊕i=1n2f (n2,m2,i)xor=i=1n2f (n2,m2,i)sum=(∑i=1n2f (n2,m2,i)2)mod1000000007sum=(i=1n2f (n2,m2,i)2)mod1000000007

其中  表示二进制按位异或,modmod 表示取模,例如 3mod2=1,(−7)mod3=23mod2=1,(7)mod3=2

输入样例 复制

4
2 2 1
3 2
3 4 2
2 3
4 3 2
1 1
99999 23 10000
100000 22

输出样例 复制

0
0 42
50
8 64
42
1 1
125954947
904110746 926732671

数据范围与提示

在样例的第一组测试数据的第一问中,f (2,2,1)=0f (2,2,1)=0,因为不存在任何一个序列满足条件。

在样例的第一组测试数据的第二问中:

  1. f (3,2,1)=1f (3,2,1)=1,即序列 a1=1,a2=2,a3=3a1=1,a2=2,a3=3 满足题意。
  2. f (3,2,2)=f (3,2,1)+3f (3,2,2)=f (3,2,1)+3,即对于整数 ii1≤i≤31i3),序列 a1=0,a2=a3=ia1=0,a2=a3=i 满足题意。
  3. f (3,2,3)=f (3,2,2)+1f (3,2,3)=f (3,2,2)+1,即序列 a1=a2=a3=0a1=a2=a3=0 满足题意。

分类标签