CF1427E Xum
https://www.luogu.com.cn/problem/CF1427E
首先设y=x<<ty=x<<ty=x<<t,使得y的最低位与xxx对齐
然后令z=x⊕yz=x \oplus yz=x⊕y, 再令o=z+yo=z+yo=z+y
然后令o⊕(y<<1)⊕xo\oplus(y<<1)\oplus xo⊕(y<<1)⊕x就可以得到yyy的第二低位
然后一路往上把yyy消得只剩下最低位,即xxx的最高位
然后把xxx的最高位消掉即可
一路消下去就是答案
code:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct A {ll x, y, o;
};
vector<A> ans;
ll calc(ll x) {ll y = x, sy = x >> 1;while(sy) {ans.push_back((A){y, y, 0});sy >>= 1; y <<= 1;}ans.push_back((A){x, y, 1});ll z = x ^ y;ans.push_back((A){z, y, 0});ll o = y + z;ans.push_back((A){y, y, 0});ll yy = y + y;ans.push_back((A){o, x, 1});ll yq = o ^ x;ans.push_back((A){yy, yq, 1});ll b = yy ^ yq;while(y != (y & -y)) {if(y & b) {ans.push_back((A){y, b, 1});y ^= b;}ans.push_back((A){b, b, 0});b = b + b;}ans.push_back((A){x, y, 1});return x ^ y;
}
ll n;
int main() {scanf("%lld", &n);while(n != 1) n = calc(n);printf("%d\n", ans.size());for(int i = 0; i < ans.size(); i ++) {if(ans[i].o == 0) printf("%lld + %lld\n", ans[i].x, ans[i].y);else printf("%lld ^ %lld\n", ans[i].x, ans[i].y);}return 0;
}
CF1427E Xum相关推荐
- CF1427 E. Xum 口胡题解
题目传送门 由于 x x o r ( x + 1 ) = 1 x\ xor\ (x+1)=1 x xor (x+1)=1,所以我们只需要构造出相邻的两个数即可. 怎么找呢? 根据裴蜀定理可知 gcd ...
- 使用正则表达式抽取新闻/BBS网页发表时间
package org.apache.nutch.parse.html; import java.text.ParseException; import java.text.SimpleDateFor ...
- HASH算法不是加密算法
HASH算法不是加密算法 作者:itwriter出处:博客2011-12-26 07:48 在 CSDN 密码泄漏事件中,网友评论提到密码的明文保存和 MD5 保存问题.目前,很多站点都用 MD5 算 ...
- 使用自定义色系美化JfreeChart图表
JFreeChart所使用的色系生成的图表很难看,笔者深有体会.在使用到JfreeChart的一些项目中经常会有客户提出"能不能由我们自己去设置图表中每个分类的颜色"等等诸如此类的 ...
- 浅谈HASH算法与CSDN密码泄漏事件
在CSDN密码泄漏事件中,网友评论提到密码的明文保存和MD5保存问题.目前,很多站点都用MD5算法保存密码,但对于HASH(哈希)算法的认识还存在很多误区,很有必要重新认识. 一.HASH算法不是加密 ...
- 【Luogu】P4462异或序列(莫队)
题目链接 观察什么时候x到y之间那一段可以被统计 xorsum[x-1]^xorsum[y]=k xorsum[x-1]=xorsum[y]^k||xorsum[y]=xorsum[x-1]^k 莫队 ...
- Codeforces Global Round 11——E随机+线性基待补
A - Avoiding Zero 不难发现如果数组所有元素和为0一定不能满足条件,否则一定能满足. 假设所有元素和不为0尝试以下构造,如果正数和小于负数和的绝对值,那么逆序排列,否则顺序排列,这样一 ...
- SpringCloud的学习记录(1)
最近一段时间重新学习一边SpringCloud,这里简单记录一下. 我用的是IntelliJ IDEA开发工具, SpringBoot的版本是2.1.3.RELEASE. 1. 构建Maven项目 整 ...
- com.sec.android.ofvi,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
AndroidManifest.xml rI*9%N 01F(g(} .gxN^9 META-INF/CERT.RSA3hb }H[x$w META-INF/CERT.SF "x)J?X c ...
- 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下...
2019独角兽企业重金招聘Python工程师标准>>> 8.10 shell特殊符号&cut命令 特殊符号 "*" 代表零个或多个字符 "?&q ...
最新文章
- 爬虫 | 正则表达式提取腾讯教育新闻链接及图片链接
- sybase存储过程修改
- 把DXF导入到Altium Designer的完美方法
- Spring Security构建Rest服务-0702-短信验证码登录
- 发现dba_segments和dba_extents中统计段空间大小居然不一样
- 移动端常见的一些兼容性问题
- 每日一题:leetcode1579.保证图可完全遍历
- python安装scrapy_Python安装Scrapy的种种
- 删掉SQL Server登录时登录名下拉列表框中的选项
- 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
- C++笔记-lambda表达式需要注意的地方
- JDBC学习笔记(全)
- Python编译、运行、反编译pyc文件
- (转)Aladdin PK SimCorp Dimension
- 如何获取Linux的主机名和域名?
- linux 进程带宽限制,Linux限制网络带宽的占用
- ES 创建太多 buckets 错误: trying to create too many buckets. must be less than or equal to: [100000] but w
- 商场抽奖软件 android,召唤抽奖系统3.0正式版
- python真的能赚钱吗,学python可以赚钱吗
- KEIL设置程序起始地址无效解决方法,STM32 IAP程序起始地址