![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位运算
位运算
风有点大
good good study!!!
展开
-
【acwing】92. 递归实现指数型枚举
题目 思路 每个数有选和不选两种状态,使用dfs暴力搜索就行,dfs需要记录当前已经到第几个数了,使用vis数组标记当前数字的状态 代码 #include<iostream> using namespace std; const int N = 20; bool vis[N]; int n; void dfs(int now){ if(now>n){ for(int i=1;i<=n;i++){ if(vis[i]){原创 2021-04-17 10:21:08 · 170 阅读 · 0 评论 -
【acwing】90. 64位整数乘法
题目 思路 (二进制思想) O(logn) 如果直接计算a乘b这会超过 long long 的最大范围,所以采用类似于快速幂的思想 快速幂: a*a*a*a...*a 一共b个a 这一题: a+a+a+a...+a 一共b个a 把 b写成二进制形式,然后如果某位上为1就加上它a*(2^n)次方(n与这位的位置有关) 并且每次计算后取模就可以了 例:计算 3*7 7的二进制 111 3*(2^0)=3 3*(2^1)=6 3*(2^2)=12 代码 #include<iostre原创 2021-04-16 16:57:36 · 74 阅读 · 0 评论 -
【acwing】89. a^b
题目 思路 首先ab中可以设b=2t1+2t2+…+2tk(二进制) 即将b转换为二进制表示 b&1就是判断b的二进制表示中第0位上的数是否为1,若为1,b&1=true,反之b&1=false b&1也可以用来判断奇数和偶数,b&1=true时为奇数,反之b&1=false时为偶数 快速幂模板 int qmi(int a, int k, int p) // 求a^k mod p { int res = 1 % p; while (k原创 2021-04-16 16:27:42 · 75 阅读 · 0 评论