https://blog.csdn.net/zfq17796515982/article/details/83051495 题意:解方程:a-(a^x)-x=0 给出a的值,要求计算解(非负)的个数 题解:需要^和 - 起到相同的效果. 1^1=0 1-1=0 1^0=1 1-0=1 0^0=0 0-0=0, 0^1=1 0-1=-1 a的二进制位上为1时,x的二进制位上为1或者0,异或和减的效果相同. a的二进制有几个1,就表示解的个数有2的几次方个 #include<bits/stdc++.…
Description Colossal! — exclaimed Hawk-nose. — A programmer! That's exactly what we are looking for. Arkadi and Boris Strugatsky. Monday starts on Saturday Reading the book "Equations of Mathematical Magic" Roman Oira-Oira and Cristobal Junta fo…
Attention 秋招接近尾声,我总结了 牛客.WanAndroid 上,有关笔试面经的帖子中出现的算法题,结合往年考题写了这一系列文章,所有文章均与 LeetCode 进行核对.测试.欢迎食用 本文将覆盖 「二进制」 + 「位运算」 和 Lru 方面的面试算法题,文中我将给出: 面试中的题目 解题的思路 特定问题的技巧和注意事项 考察的知识点及其概念 详细的代码和解析 开始之前,我们先看下会有哪些重点案例: 为了方便大家跟进学习,我在 GitHub 建立了一个仓库 仓库地址:超级干货!精心归…
题目要求解$a-(a\oplus x)-x=0$的解$x$的个数 移项得$a-x=a\oplus x$ $a$的二进制形式,应该是一个$01$串,异或的过程是不能影响到两个不同的位的,所以我们按位考虑 如果这一位是$0$,那么$x$的这一位也应为$0$,使得异或后答案不会更大 如果这一位是$1$,那么$x$的这一位可以为$0$或$1$,对应到减法中就是没减和减掉 所以答案就是$2^{count~~1~~in~~a}$ #include<iostream> #include<cstdio&…
\(\\\) \(Description\) \(T\) 组询问,每次给出一个 \(a\),求方程 \[ a-(a\oplus x)-x=0 \] 的方案数. \(T\le 10^3,a\le 2^{30}\) \(\\\) \(Solution\) 我菜又被巨佬 \(Diss\) 了...... 考场 \(NC\) 问了爷们半懂不懂的就过了...... 移项,得 \[ a=(a\oplus x)+x \] 然后注意到满足这个性质的 \(x\) ,在二进制表示下一定是 \(a\) 的子集. 因为…
思路 打表找规律,发现结果是,2的(a二进制位为1总数)次方 代码 #include<bits/stdc++.h> using namespace std; #define ll long long int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll t,a; //freopen("in.txt","r",stdin); cin>>t; while(t--)…
D. Magic Breeding link http://codeforces.com/contest/878/problem/D description Nikita and Sasha play a computer game where you have to breed some magical creatures. Initially, they have k creatures numbered from 1 to k. Creatures have n different cha…
题意: 出自刘汝佳算法竞赛入门经典第四章. 考虑下面的01串序列: 0, 00, 01, 10, 000, 001, 010, 011, 100, 101, 110, 0000, 0001, …, 1101, 1110, 00000, … 首先是长度为1的串,然后是长度为2的串,依此类推.如果看成二进制,相同长度的后 一个串等于前一个串加1.注意上述序列中不存在全为1的串. 你的任务是编写一个解码程序.首先输入一个编码头(例如AB#TANCnrtXc),则上述 序列的每个串依次对应编码头的每个字…
一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, 0表示正数, 1表示负数; (3).正数的原码, 反码, 补码都一样; (4).负数的反码=它的原码符号位不变, 其他位取反; (5).负数的补码=它的反码+1; (6).0的反码, 补码都是0; (7).在计算机运算的时候, 都是以补码的方式来运算的. 2.位运算 Java中有4个位运算, 分别…
一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, 0表示正数, 1表示负数; (3).正数的原码, 反码, 补码都一样; (4).负数的反码=它的原码符号位不变, 其他位取反; (5).负数的补码=它的反码+1; (6).0的反码, 补码都是0; (7).在计算机运算的时候, 都是以补码的方式来运算的. 2.位运算 Java中有4个位运算, 分别…