首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【Python 千题 —— 基础篇】2 N 次方

题目描述 2 N 次方。输入一个整数 N,使用 for 循环计算 2 N 次方值。 输入描述 输入一个整数值 N。 输出描述 输出 2 N 次方值。...示例 示例 ① 输入: 20 输出: 请输入一个整数 N: 20 2 20 次方值是: 1048576 代码讲解 下面是本题代码: # 描述: 输入一个整数 N,使用 for 循环计算 2 ...= 1 # 使用 for 循环计算 2 N 次方 for _ in range(N): result *= 2 # 输出结果 print(f"2 {N} 次方值是: {result...result = 1 使用 for 循环计算 2 N 次方: 使用 for 循环遍历范围为0到N数,每次循环都将 result 乘以2。...print(f"2 {N} 次方值是: {result}") 这样,用户输入一个整数 N,程序会使用 for 循环计算 2 N 次方值,并输出结果。

40010

20次方为什么等于1?

,最后累加起来,比如2503代表2个1000、5个100、0个10、3个1累加结果,即2503=21000+5100+010+31,1000、100、10、1又分别可以使用10^3(103次方)...以前我们总是去刻意记住比如10^0和2^0是1,负次方是几分之一,但是其实我们应该记住这套规则,这样就能举一反三。...可以分三种情况来看: 1.左端是王牌情况 王牌选择2种,剩余四张牌进行置换,总数计算如下: 2*P(4/4)=2*4*3*2*1=48。...2.右端是王牌 同上,48 3.两端是王牌 两端选择,两张王牌置换P(2/2)*剩余3张牌置换P(3/3)=2!*3!=2*1*3*2*1=12。...1和2两种情况包含了3情况,所以区分大小王排法总数=1总数+2总数-3总数,然后计算不区分大小王情况,除以王牌重复度P(2/2)=2*1=2,最后总排法为: (48+48-12) /

1.1K20

2 次方 ——《CC++ 位运算黑科技 02》

原理 现在我们使用二进制码表示都很简单:1、2、4、8、16・・・・・・ 仔细观察就可以发现:在一串二进制数中,如果只出现一个 1,它就是 2 次方 代码 template <typename T...2(T v) { return v && (v & -v) == v; } 原理剖析 方法一: 因为 2 次方只有一个 1,我们只需要去掉最后一个 1 后判断是否等于 0 即可。...(v & (v - 1)); 方法二: 法二和法一类似,首先我们需要知道 v & -v 有什么用,v & -v 其实就是获取一个二进制数从低位到高位第一个 1 位索引。...以 111 为例,111 补码为 001,111 & 001 = 001;以 110 为例,110 补码为 010,110 & 010 = 010; 显而易见,如果一个数位索引等于它本身,那么它就是...2 次方

30520

数值整数次方

然而,我们目标就是求出一个数字32次方,如果我们已经知道了它16次方,那么只要在16次方基础上再平方一次就可以了。而16次方是8次方平方。...以此类推,我们求32次方只需要做5次乘法: 先求平方 在平方基础上求4次方 在4次方基础上求8次方 在8次方基础上求16次方 在16次方基础上求32次方 思考到这里,我们设要求次方为n,那么:...当n为偶数时,可以拆分为n/2 * n/2 当n为奇数时,可以拆分为(n-1)/2 * (n-1)/2 乘式两边计算出结果后,仍然可以对结果应用上述规则进行计算,直至n为0或1,总结成公式后,如下图所示...对此不了解开发者请移步我另一篇文章:二进制中一个数-右移运算符[1] 对递归不熟悉开发者,请移步:递归理解与实现[2] 编写测试用例 接下来,我们将各种边界条件都考虑进去,验证下上述代码能否正确执行...参考资料 [1]二进制中一个数-右移运算符: https://juejin.cn/post/7025381928387739684#heading-11 [2]递归理解与实现: https://juejin.cn

48930

数值整数次方

题目描述 给定一个 double 类型浮点数 x和 int 类型整数 n,求 x n 次方。 解题思路 最直观解法是将 x 重复乘 n 次,xxx…x,那么时间复杂度为 O(N)。...因为乘法是可交换,所以可以将上述操作拆开成两半 (xx…x) (x*x…*x),两半计算是一样,因此只需要计算一次。而且对于新拆开计算,又可以继续拆开。...这就是分治思想,将原问题规模拆成多个规模较小子问题,最后子问题解合并起来。 本题中子问题是 xn/2,在将子问题合并时将子问题解乘于自身相乘即可。...因为 (x*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法时间复杂度为 O(logN)。...pow(2,2) * pow(2,2) = 16; 第二次计算 * */ }

51420

每日一面 - 求与数字最接近 2 N 次方

对于 2 N 次方取余,相当于对 2 N 次方减一取与运算,这对于高并发分片计算时候,很有用。...为了对用户友好,我们让用户设置分片数量时候可能不限制必须是 2 N 次方,但是内部我们设置分片时候,将其设置为最近用户输入数字 2 N 次方值即可。那么如何计算呢?...抽象为比较直观理解就是,找一个数字最左边 1 左边一个 1 (大于 N 最小 2 N 次方),或者是最左边1(小于N最大2N次方),前提是这个数字本身不是2n次方。 ?...一种思路是,将这个数字最高位 1 之后所有位都填上 1,最后加一,就是大于N最小 2 N 次方。右移一位,就是小于N最大 2 N次方。 如何填补呢?...2N次方 n = n >>> 1; //小于N最大2N次方 如果有兴趣,可以看一下 Java ForkJoinPool 类构造器,其中 WorkQueue 大小,就是通过这样转换得来

2.2K40

每日一面 - 为何我们经常使用 2 N 次方作为分片数量?

我们经常看到很多地方高性能代码设计,都是将分片数量设置为 2 N 次方。...对于 2 N 次方取余,相当于对 2 N 次方减一取与运算, N 为正整数。为什么呢?通过下图就能很容易理解: 十进制中,对于 10 N 次方取余,直观来看就是: ?...例如在生成缓存队列槽位时候,一般生成2n次方个槽位,因为这样在选择槽位时候,就可以用取与代替取余;java 中 ForkJoinPool 队列长度就是定为 2 N 次方;netty 中缓存池叶子节点都是...2 N 次方,当然这也是因为是平衡二叉查找树算法实现。...0,如果是,则是 2 N 次方, N为正整数。

71120
领券