解题思路是:

Q=q1^q2.......^qn = p1^p2......^pn^((1%1)^....(1%n))^((2%1)^......(2%n))^....

故Q的求解过程分成两部分

第一部分是求p1^p2......^pn

第二部分是求((1%1)^....(1%n))^((2%1)^......(2%n))^....

将其化成矩形的形式

1%1   1%2  ...........  1%n

2%1   2%2  ............ 2%n

.....................................

n%1   n%2 ............. n%n

当i小于除数时,即 i%j = i (i<j)

故该矩形的上对角线变成

1%1     1  ...........      1              (n-1)个1

2%1   2%2  ............  2              (n-2)个2

.....................................             ........

(n-1)%1................   n-1

n%1   n%2 ............. n%n              0个n

注意偶数个相同的元素异或结果为0,奇数个相同元素异或结果为本身,0与其他元素异或结果为该元素

故对于矩形上三角 只需要考虑(n-i)的奇偶性 故这部分代码简化为

if(n-i是偶数) res^=i;

现在考虑矩形下三角,将下三角取余数的

0

0     0

0     1     0

.      0     1   ..

.      1     2

.      .      0     ...................

.      .      .

0       .........................................

根据规律

第一列为0循环变化

第二列为0~1循环变化

第i列为 0 ~i-1 循环变化

...........

第i列元素个数为n-i+1

得到每列的循环个数及剩余的个数

判断循环个数的奇偶,注意偶数个相同的元素异或结果为0,奇数个相同元素异或结果为1,0与任何元素异或结果为该元素

然后将剩余的个数异或即可

#include <iostream>
#include <vector>
using namespace std; int main(){
int n,res = ,p;
cin>>n;
vector<int> table(n+,);
for(int i = ; i <= n; ++ i){
cin >> p; res^=p; //针对p1^p2......^pn
if((n-i)%) res^=i; //针对上三角
table[i]^=table[i-]^i; //打表
}
int a = ;
for(int i = ; i < n ; ++ i){ //针对下三角
int num = (n-i)/a, leave = (n-i)%a;
if(num%) res^=table[a-];
if(leave) res^=table[leave-];
a++;
}
cout<<res<<endl;
}

Codeforces Round #242 (Div. 2) C. Magic Formulas的更多相关文章

  1. Codeforces Round #242 (Div. 2) C. Magic Formulas (位异或性质 找规律)

    题目 比赛的时候找出规律了,但是找的有点慢了,写代码的时候出了问题,也没交对,还掉分了.... 还是先总结一下位移或的性质吧: 1.  交换律 a ^ b = b ^ a 2. 结合律 (a^b) ^ ...

  2. Codeforces Round #242 (Div. 2) A~C

    题目链接 A. Squats time limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputou ...

  3. Codeforces Round #242 (Div. 2) &lt;A-D&gt;

    CF424 A. Squats 题目意思: 有n(n为偶数)个x和X,求最少的变换次数,使得X的个数为n/2,输出变换后的序列. 解题思路: 统计X的个数ans,和n/2比較,少了的话,须要把n/2- ...

  4. Codeforces Round #335 (Div. 2) A. Magic Spheres 水题

    A. Magic Spheres Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.codeforces.com/contest/606/ ...

  5. Codeforces Round #443 (Div. 1) D. Magic Breeding 位运算

    D. Magic Breeding link http://codeforces.com/contest/878/problem/D description Nikita and Sasha play ...

  6. Codeforces Round #350 (Div. 2) D1. Magic Powder - 1 二分

    D1. Magic Powder - 1 题目连接: http://www.codeforces.com/contest/670/problem/D1 Description This problem ...

  7. Codeforces Round #350 (Div. 2) D2. Magic Powder - 2

    题目链接: http://codeforces.com/contest/670/problem/D2 题解: 二分答案. #include<iostream> #include<cs ...

  8. Codeforces Round #242 (Div. 2) C题

    题目链接:http://codeforces.com/contest/424/problem/C, 想来一个小时,就是做不出,都做出来了,悲剧! 分析:我们知道交换异或的顺序不影响答案! 然后就是求t ...

  9. Codeforces Round #335 (Div. 2) A. Magic Spheres 模拟

    A. Magic Spheres   Carl is a beginner magician. He has a blue, b violet and c orange magic spheres. ...

随机推荐

  1. git 使用技巧

    让git不检测文件权限 在android根目录执行:repo forall -c git config core.filemode false即可 修改默认编辑器: git config –globa ...

  2. WebApiのエラーメッセージをどうカスタマイズです?

    本来是发布在客户的Wiki上,所以就用日语写. ------------------------------------------------------------------------ Web ...

  3. Android性能优化系列 + Android官方培训课程中文版

    Android性能优化典范 - 第6季 http://hukai.me/android-performance-patterns-season-6/   Android性能优化典范 - 第5季 htt ...

  4. 【JAVA集合框架之Set】

    一.Set概述. Set集合的特点是元素不允许重复,而且是无序的(添加和取出的顺序不一致). Set接口中的方法和Collection接口中的方法几乎相同,略. Set接口下常用的两个类:HashSe ...

  5. sdut 2441 屠夫与狼

    屠夫和狼 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  6. Myeclipse的web工程和Eclipse互相转换

    eclipse的web工程转myeclipse的web工程1.原eclipse工程叫netschool 2.在myeclipse中新建一个工程叫netschool 并在新建的时修改 web root ...

  7. Hihicoder 题目1 : Trie树(字典树,经典题)

    题目1 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编 ...

  8. scala中的抽象类

    scala中也有和java,c#类似的抽象类,抽象类会有部分实现,也有没有实现的方法定义.抽象类最大的特征是不能直接实例化.下面我们看个例子. abstract class Animal { def ...

  9. Servlet中的GET和POST之间的区别

    自己的感悟: get和post这是http协议的两种方法,另外还有head, delete等 这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串.post的 ...

  10. ListView中每个item条目在被单击选中时能够高亮显示

    在布局文件中设定: android:listSelector="@android:color/holo_red_light" 在代码中实现 listView.setSelector ...