# 从键盘输入一个正整数,用2的幂次方的形式输出。约定幂次方用括号来表示,即表示为2(b),b=1时,幂省略。例如139=2^7+2^3+2^1+2^0,即:2(7)+2(3)+2+2(0)

news/2025/1/3 8:26:41/

样例输入:

402

样例输出
2(8)+2(7)+2(4)+2

要求:幂不能重复,如:139=26+26+23+21+20(出现了2个6次方)

参考 C 代码:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>int main()
{int n; scanf("%d",&n);int a[100];    // 存储每个指数幂int i = 0; int exp = 0;int num = n;while (num)   // 只要我num还有一口气就继续循环{exp = 0;  // 每次循环都要初始化while ( pow(2.0, exp) < num )    /* 只要2.0^exp小于num,我就给它的幂自增 */{exp++;  }exp--;                 // 因为上面while循环会多余增加一次exp,现在我给它自减一下if ( pow(2.0, exp+1) == num )   /* 上面循环while我检测的是<而不是<=,这里我要测试下是不是= */a[i++] = ++exp;             /* 如果=我就要存储a[i]=++exp了,注意下标i要往后走一位 */elsea[i++] = exp;			 /* 否则我就存储a[i]=exp了 */num -= pow(2.0, exp);}for (int j = 0; j<i; j++){if (j) printf("+");if (a[j] == 1)        /* exp=1的格式比较特殊,给它专门搞个if */printf("2");elseprintf("2(%d)", a[j]);}system("pause");
}

tips:这题有两个坑的地方:
1.输出格式:’+'只在两个数之间;exp=1的格式特殊
2.while循环判断条件是 < (<=其实也可以),后面如何保证<和=的各自条件都能考虑到exp到底是多少


http://www.ppmy.cn/news/678506.html

相关文章

7-1 这是2的幂么? (10 分)

7-1 这是2的幂么&#xff1f; (10 分) 在类Tool中定义一个方法 isPower&#xff0c;要求对于形参num&#xff08;num>0&#xff09;&#xff0c;判断num是不是2的幂&#xff0c;如果是返回true&#xff0c;否则返回false 在Main类中main方法中调用此方法&#xff0c;输入一…

7-56 365次方

7-56 365次方 网上曾经有两个很火的公式&#xff0c;那就是1的365次方是1&#xff0c;1.01的365次方约等于37.8&#xff0c;0.99的365次方约等于0.03。每天多努力百分之一&#xff0c;每天进步百分之一&#xff0c;一年以后将取得很大进步&#xff0c;而每天退步百分之一&#…

(java)2的幂次方

题目描述 何一个正整数都可以用2的幂次方表示。例如&#xff1a;1372^72^32^0 同时约定幂次方用括号来表示&#xff0c;即a^b可表示为a(b)。由此可知&#xff0c;137可表示为&#xff1a; 2&#xff08;7&#xff09;2&#xff08;3&#xff09;2&#xff08;0&#xff09; …

用计算机怎么算3分之2次方,64的3分之2次方怎么算啊

64的3分之2次方怎么算啊以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01; 64的3分之2次方怎么算啊 你好&#xff0c;很高兴为你解答 64的3分之2次方这样算 6416 16开3次方16 64的3分之2次方16…

为什么byte的最大是2的7次方减一而最小是负2的7次方

简书 来我们一步步分析分析&#xff1a; 1.byte占用8位&#xff0c;每位用0或1表示&#xff0c;能够表示256(2^8)个数据。 2.这8位分为符号位&#xff08;最高位&#xff09;和数值位&#xff08;剩余七位&#xff09;&#xff0c;符号位0表示正数&#xff0c;1表示负数。 …

7-53 2的n次方

计算2的n次方&#xff0c;n由用户输入 输入格式: 输入一个正整数 输出格式: 输出一个正整数 输入样例: 5输出样例: 32 #include<bits/stdc.h> using namespace std; double a; int main() {int b;cin>>b;apow(2,b);printf("%0.0lf",a); }

求2的n次方对1e9+7的模

问题引出 有如下问题&#xff1a; 求 2 n 2^n 2n mod (1e97)&#xff0c;其中1< n < 1 0 100000 10^{100000} 10100000。 首先明确一下此类问题的几种算法&#xff0c;首先朴素算法&#xff0c;即暴力循环求解&#xff0c;是O(N)复杂度&#xff0c;适用范围应该是n小于…

常见进制转换

常见进制转换 一. 进制概述 进制也就是进位计数制&#xff0c;是人为定义的带进位的计数方法&#xff08;有不带进位的计数方法&#xff0c;比如原始的结绳计数法&#xff0c;唱票时常用的“正”字计数法&#xff0c;以及类似的tally mark计数&#xff09;。 对于任何一种进制…