洛谷模拟赛 答案错误

题目背景

小X比较差,她(她?tan90°)有许多WA掉的题,所以她很难受。小Z决定去安慰她,可是他的提交记录里一道WA都没有(flag),于是他决定篡改一半题的署名,让小X觉得他们的错题相当,这样她会好受一些

题目描述

每道WA了的题都会有一个分数,对于两个人的WA题程度是否相同,小X有这样一个评判方法:

无聊的她想了这样一个神奇的函数

image

她认为,无论ai取什么值,两组f(x)的和都相等,则这两组题的错误程度很相似

假如有分值为 A={1,4,6,7 } ,B={2,3,5,8} 的两份被篡改完成的WA题,当a_1=a_2=a_3=1a1=a2=a3=1时,神奇的函数为

f(x)=x^2+x+1f(x)=x2+x+1

那么,f(1)=3,f(2)=7,f(3)=13......f(1)=3,f(2)=7,f(3)=13......

显然 f(1) + f(4) + f(6) + f(7) = 124 = f(2) + f(3) +f(5) +f(8)f(1)+f(4)+f(6)+f(7)=124=f(2)+f(3)+f(5)+f(8)

对于这组系数,此分组方案是合法的,可以证明,a_iai取任意值,按照以上方案分组都满足条件(两组的f(x)f(x)和相同),不信可以手动枚举(_hua|ji_)

所以,A={1,4,6,7 } ,B={2,3,5,8}就是一种合法的分组

输入输出格式

输入格式:

 

第一行一个整数nn,代表有2^n2n道WA题,分值分别从11到2^n2n, n>=2n>=2 (emmm........满分是inf)

第二行一个整数q,表示有q组询问

最后一行q个整数,询问分值为x的WA题是谁的名字

(因为小X比较菜,所以我们认为分值为1的WA题是属于她的)

 

输出格式:

 

一共q行,每行一个字符 ‘XX’ 或 ‘ZZ’ ,表示分值为x的WA题是谁的署名

 

输入输出样例

输入样例#1: 复制
3
2
4 5
输出样例#1: 复制
X
Z

说明

对于10%的数据,n<=4 , q<=10;

对于40%的数据,n<=20 , q<=5000;

对于100%的数据,n<=60 , q<=1000000;

题解网址https://pan.baidu.com/s/1qYPuPjA

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 typedef long long lol;
 7 lol cnt,n,q;
 8 int main()
 9 {lol x,i;
10 cin>>n;
11     cin>>q;
12     while (q--)
13     {
14         scanf("%lld",&x);
15         x--;
16         cnt=0;
17         for (i=x;i;i-=(i&(-i))) cnt++;
18         if (cnt%2) printf("Z\n");
19         else printf("X\n");
20     }
21 }

 

posted @ 2017-10-29 11:57  Z-Y-Y-S  阅读(505)  评论(0编辑  收藏  举报