竞赛
考级
如果还做不懂顺着网线来c我(bushi)
这道题目看着很难,但实现起来很简单,我们可以使用位运算的方式来实现; 首先需要判断这个数的 奇偶性奇偶性奇偶性 ,2的次方都是偶数,所以奇数是无法被分解的 然后就可以进行位运算了,但先要了解背景知识: 这段代码可以将 powerpowerpower 赋值为 2n2^{n}2n(222 的 nnn 次方),<<<<<< 是左移的意思 因为 102410241024 之内最大的 222 的次方是2272^{27}227 ( 222 的 272727 次方),所以我们从大到小遍历,如果 222 的 iii 次方小于 nnn 那么就把 2i2^i2i 从 nnn 中分离出去 完整代码:
#不断取log2就行
本人初一,请多指教 思路讲解 1. 若nnn为奇数,则直接输出-1 2. 若nnn为偶数,则将该数转为二进制,用栈存储每一个二进制位,倒序输出非零位与相应权值的乘积 代码范例 注意事项 使用pow(a,b)函数时需注意double->int的转换,且b为s1.size()-1,即 2k−12^{k-1}2k−1 (kkk为正整数,相当于s1.size()) THANKS FOR WATCHING!
考的就是理解
我们注意到,题目中说2^0不行,所以先排除单数 而2的n次方只能有一个,所以这题可以用二进制 代码如下
提交答案之后,这里将显示提交结果~