NOIP 2的幂次方表达式
程序员文章站
2022-06-02 21:26:54
...
NOIP 2的幂次方表达式
样例输入
137
样例输出
2(2(2)+2+2(0))+2(2+2(0))+2(0)
-
思路1:
-
code1:
#include <iostream>
using namespace std;
int Pow[16] = {1};
void Divide(int n){
bool flag = true;
while(n > 0){
if(!flag) printf("+");
else flag = false;
if(n == 1){
printf("2(0)");
return;
}
if(n == 2){
printf("2");
return;
}
if(n == 3){
printf("2+2(0)");
return;
}
for(int j = 15; j >= 2; --j){
if(Pow[j] <= n){
//分解n的第一个(最大的)因子的二次幂的幂次(Pow[i]=2^i)即Divide(i)
//因为4 = 2(2),第一次分解n的时候,已经相当于把4等价于2(2),真正要分解的是()里面的2
printf("2(");
Divide(j);
printf(")");
n -= Pow[j];
break;
}
}
}
}
int main(){
int x;
scanf("%d", &x);
for(int i = 0; i < 16; ++i){
Pow[i+1] = Pow[i] * 2;
}
Divide(x);
}
推荐阅读
-
pow函数(数学次方)在c语言的用法,两种编写方法实例( 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值)
-
EditPlus中的正则表达式 实战(2)
-
hashmap 为什么初始化容量是2的幂次方
-
js正则表达式之$1$2$3$4$5$6$7$8$9属性,返回子匹配的结果
-
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程 ax^2+bx+c=0ax 2 +bx+c=0 的两个解。
-
剑指Offer16_数值的整数次方(快速幂及拓展)
-
Leetcode231. 2的幂
-
用VBS精确计算2的100次方的代码
-
LintCode 1314. 2的幂 JavaScript算法
-
LintCode 题目:2的幂