Luogu P1010 幂次方】的更多相关文章

[橙题不会做系列]QAQ 是李老师上课的题目-- 这题最开始想法是打表做.事实证明这样做也可以( 老师用的是位运算-- 这种一步步分解也能想到用递归qwq #include <algorithm> #include <iostream> #include <cstdio> #include <stack> #include <cmath> using namespace std; void qwq(const int n) { stack<…
P1010 幂次方 一.题目 https://www.luogu.org/problemnew/show/P1010 二.代码 #include<bits/stdc++.h> using namespace std; // 根据2的几次幂进行分解 string decompose(int num) { ) { "; } string s = ""; ; // 指数,比如2=2^1,则指数为1 do { ) // 判断奇数 { // num=2时,exp==1才为真…
2021.07.26 P1010 幂次方(数论) [P1010 NOIP1998 普及组] 幂次方 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.二进制 题意: 用20或21表示一个数为二的多少次方 分析: 递归. 代码如下: #include<cstdio> #include<iostream> #include<cstring> using namespace std; int n; inline int read(){ int s=…
题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7= 2^2+2+2^0 (2^1用2表示) 3=2+2^0 所以最后137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如: 1315=2^10 +2^8 +2^5 +2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0)))+2…
0 题面 题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7= 2^2+2+2^0 (2^1用2表示) 3=2+2^0 所以最后137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如: 1315=2^10 +2^8 +2^5 +2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0…
题目描述 任何一个正整数都可以用22的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20 同时约定方次用括号来表示,即a^bab 可表示为a(b)a(b). 由此可知,137137可表示为: 2(7)+2(3)+2(0)2(7)+2(3)+2(0) 进一步: 7= 2^2+2+2^07=22+2+20(2^1用2表示),并且 3=2+2^03=2+20 所以最后137137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0)2(2(2)+2+2(0))+2…
题目描述 任何一个正整数都可以用222的幂次方表示.例如 137=27+23+20137=2^7+2^3+2^0 137=27+23+20 同时约定方次用括号来表示,即aba^bab 可表示为a(b)a(b)a(b). 由此可知,137137137可表示为: 2(7)+2(3)+2(0)2(7)+2(3)+2(0)2(7)+2(3)+2(0) 进一步: 7=22+2+207= 2^2+2+2^07=22+2+20 (2^1用2表示),并且 3=2+203=2+2^03=2+20 所以最后1371…
题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137137可表示为: 2(7)+2(3)+2(0) 进一步: 7= 2^2+2+2^0(2^1用2表示),并且 3=2+2^0 所以最后137137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如: 1315=2^{10} +2^8 +2^5 +2+1 所以13151315最后可表示为: 2(2(2+2(0))+2)…
https://www.luogu.com.cn/problem/P1010 刚刚看到这个题时,有点懵,如果说这是个数学题 比如说7,应该先求出7 = 4 + 2 + 1; 即先分解出里面应该有最多的2的个数,然后再往下递推 算出2的多少次幂最接近给出的n: 用原来n的数减去2的幂,如果这个数大于2,继续对新的n进行搜索: 如果幂大于2,对幂进行上述搜索: 一旦输入函数的数为0(退出)或1(2的0次幂)或2(2的1次幂,这时候1不需要输出),输出: #include <bits/stdc++.h…
做了好久,递归拆吧 #include<iostream>#include<cstdio>#include<cmath>using namespace std;int fun(int);int main(){          int n;          cin>>n;          fun(n);}int fun(int x){           int i;           for(int i=14;i>=0;i--)         …