Codeforces Round #242 (Div. 2) C. Magic Formulas
解题思路是:
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的更多相关文章
- Codeforces Round #242 (Div. 2) C. Magic Formulas (位异或性质 找规律)
题目 比赛的时候找出规律了,但是找的有点慢了,写代码的时候出了问题,也没交对,还掉分了.... 还是先总结一下位移或的性质吧: 1. 交换律 a ^ b = b ^ a 2. 结合律 (a^b) ^ ...
- Codeforces Round #242 (Div. 2) A~C
题目链接 A. Squats time limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputou ...
- Codeforces Round #242 (Div. 2) <A-D>
CF424 A. Squats 题目意思: 有n(n为偶数)个x和X,求最少的变换次数,使得X的个数为n/2,输出变换后的序列. 解题思路: 统计X的个数ans,和n/2比較,少了的话,须要把n/2- ...
- 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/ ...
- Codeforces Round #443 (Div. 1) D. Magic Breeding 位运算
D. Magic Breeding link http://codeforces.com/contest/878/problem/D description Nikita and Sasha play ...
- Codeforces Round #350 (Div. 2) D1. Magic Powder - 1 二分
D1. Magic Powder - 1 题目连接: http://www.codeforces.com/contest/670/problem/D1 Description This problem ...
- Codeforces Round #350 (Div. 2) D2. Magic Powder - 2
题目链接: http://codeforces.com/contest/670/problem/D2 题解: 二分答案. #include<iostream> #include<cs ...
- Codeforces Round #242 (Div. 2) C题
题目链接:http://codeforces.com/contest/424/problem/C, 想来一个小时,就是做不出,都做出来了,悲剧! 分析:我们知道交换异或的顺序不影响答案! 然后就是求t ...
- 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. ...
随机推荐
- 很少有人会告诉你的Android开发基本常识
原文:很少有人会告诉你的Android开发基本常识. 文章介绍了一些关于开发.测试.版本管理.工具使用等方面的知识.
- GPS NEMA 0183协议
转自:http://www.cnblogs.com/xidongs/archive/2011/02/01/1948689.html 一. NMEA0183标准语句(GPS常用语句)$GPGGA例:$G ...
- HTTP/1.1 中 If-Modified-Since 和 If-Unmodified-Since 区别简记
接触HTTP/1.1的时日还不多, 有时候看着这两个参数老是有点混淆, 今天终于理清了, 现记录下. 初学网络, 若有理解不对, 还请拍砖. If-Modified-Since: 从字面上看, ...
- Java Socket编程示例
一.Socket简介: 1.什么是Socket 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket ...
- a个人经验总结2
金额 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8& ...
- [Linux][Hadoop] 将hadoop跑起来
前面安装过程待补充,安装完成hadoop安装之后,开始执行相关命令,让hadoop跑起来 使用命令启动所有服务: hadoop@ubuntu:/usr/local/gz/hadoop-$ ./sb ...
- BuildFilePath 及打开文件对话框
也许以后就主要在这里发SOUI的介绍了. 贴一段文件相关的helper, 测试一下贴代码是不是方便. /** * Copyright (C) 2014-2050 * All rights reserv ...
- 基于socket、多线程的客户端服务器端聊天程序
服务器端: using System; using System.Windows.Forms; using System.Net.Sockets; using System.Net;//IPAddre ...
- Vijos P1459 车展 treap求任意区间中位数
描述 遥控车是在是太漂亮了,韵韵的好朋友都想来参观,所以游乐园决定举办m次车展.车库里共有n辆车,从左到右依次编号为1,2,…,n,每辆车都有一个展台.刚开始每个展台都有一个唯一的高度h[i].主管已 ...
- zoj 3795 Grouping tarjan缩点 + DGA上的最长路
Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Submit Status Practic ...