2 的幂 难度简单540收藏分享切换为英文接收动态反馈 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。...如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。...示例 1: 输入: n = 1 输出: true 解释: 20 = 1 示例 2: 输入: n = 16 输出: true 解释: 24 = 16 示例 3: 输入: n = 3 输出: false 示例...: bool isPowerOfTwo(int n) { // n - 1就是把n的二进制位的最右边的那个1去掉 如果这个时候去掉了最右边的那个1 // 这个还是很妙的...如果n真的是2的幂的话 应该是这种形式 100000... // 这个数字和n-1的&一定是0 return n > 0 && (n & (n - 1)) == 0;
2的幂从小到大有1,2,4,8... ...观察他们的二进制:1 = 1,2 = 10,4 = 100,8 = 1000......我们发现2的幂基本上都满足这样一个规律就是,这个数的二进制数都是1开头,后面m个0 我们再看一下每个2的幂次方数减...1:0 = 0,1 = 1,3 = 011,7 = 0111......我们发现正好每一位都是与2的幂的二进制相反,于是我们可以将n和n-1相&,得到的结果如果是0,就表示n是2的幂,如果不是0,他就不是...2的幂 class Solution { public boolean isPowerOfTwo(int n) { if(n <= 0) return false
4的幂 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true;否则,返回 false。...整数 n是 4 的幂次方需满足:存在整数 x 使得n == 4x 示例 1: 输入:n = 16 输出:true 示例 2: 输入:n = 5 输出:false 示例 3: 输入:n = 1 输出:true...提示: -231 <= n <= 231 - 1 我的代码: class Solution { public: bool isPowerOfFour(int n) { if(n==1)...=1) { // 反复相除 需要注意的是 需要加上n==0这个条件 if(n%4!
题目描述 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: ?...= 1 示例 2: 输入: 16 输出: true 解释: ?...= 16 示例 3: 输入: 218 输出: false 解法 如果该值是 2 的幂次方,则该值的二进制位中只有一位为 1,其他位全部为 0,则有 num&(num-1)==0。
3 的幂 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true;否则,返回 false 。...整数 n是 3的幂次方需满足:存在整数x使得n == 3x 示例 1: 输入:n = 27 输出:true 示例 2: 输入:n = 0 输出:false 示例 3: 输入:n = 9 输出:true...示例 4: 输入:n = 45 输出:false 提示: -231 <= n <= 231 - 1 我的思路: 我们不断地将 n 除以 3,直到 n=1。...如果此过程中 n 无法被 3 整除,就说明 n 不是 3 的幂。...我的代码: class Solution { public: bool isPowerOfThree(int n) { // 反复枚举相除判断 while(n && n % 3 == 0)
// 快速计算 (a ^ p) % m 的值 __int64 FastM(__int64 a, __int64 p, __int64 m){ if (p == 0) return 1;
链接 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。...示例 1: 输入: 1 输出: true 解释: 20 = 1 示例2: 输入: 16 输出: true 解释: 24 = 16 示例 3: 输入: 218 输出: false 题解 func
C语言中给了数组的定义:一组相同类型元素的集合 8.1数组定义 数组的作用就是存放一组相同类型的数,[]里面是数组的大小,10表示这个数组可以存放10个元素,arr是数组名,int是表示这个数组是整形数组...int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素 8.2数组的下标 C语言规定:数组的每个元素都有一个下标,下标是从0开始的。...在C语言中,0表示假,非0表示真。&和*我们讲指针时再讲。·~后期讲。 !就可以把真假互换。 sizeof可以计算类型大小。...exp1, exp2, exp3, …expN 逗号表达式从左到右依次计算,但是整个表达式的结果是最后一个表达式的结果。...今天的分享到这里就结束啦!感谢大家的阅读,下期我们将结束初识C语言,让我们下期再见。
8758:2的幂次方表示 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 任何一个正整数都可以用2的幂次方表示。...+2(2+2(0))+2(0) 又如: 1315=210+28+25+2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))...输出一行,符合约定的n的0,2表示(在表示中不能有空格)。...("2");// 2的一次方 15 return; 16 } 17 else 18 { 19 int j=1,i=0;//j每次乘2,如果大于了...=0) 36 { //如果n分解之后还有剩余的数,那么继续分解 37 printf("+"); 38
我们不妨验证下: 但是也有两种特殊情况 1.sizeof(数组名),数组名单独放在sizeof()中,这里的数组名表示整个数组,所以sizeof可以计算数组大小。 2....而实际上,数组元素的访问在编译器处理的时候,确实是转换成⾸元素的地址+偏移 量求出元素的地址,然后解引⽤来访问的。...二.一维数组传参 既然数组名是首元素地址,那么我们在数组传参的时候,传过去的参数本质上应该是个指针。 那么我们能不能在函数的内部计算出一个数组的大小呢?...答案是不能,上面已经提到了,你创建的用来接收数组名的形参本质上是个指针,指针的大小只与环境有关(X64下是8个字节,X86是4个字节)。 所以在函数内部是计算不出数组的大小的。...,有关二级指针的运算,我们可以通过*p2,也就是对p2进行解引用找到p1,再对p1解引用找到n,从而对n进行修改。 四.指针数组 指针数组就是存放指针的数组。
上面三种是正确的。 并且我们有一个想法,为什么要有数据类型呢?直接丢给变量一整块空间让他使用不好吗。答案当然是不好,这样会导致空间浪费。本质是对内存进行合理划分。 类型在c语言中为什么有这么多种?...十进制转二进制是一种计算,计算的过程需要软硬件参与。可以出现第九个比特位。 截断是不是发生了错误?是的。 半计算半规定的一种方式。 -128在存入过程当中半计算,半截断。...char c=0这样写是没有问题的,但是不便于用户理解。...那么,我们就理解了,对于多少位,应该是这样一个范围: 那么,就让我们根据一些练习题练习一下,看看是否掌握了吧 int i=-20,等于2的4次方+2的2次方,因为都是4个字节,所以都是32个比特位。...所以c99当中的bool类型可移植性较好。 运行下面这个程序: 我们会发现输出结果是1 2 3。 第一种比较方法不推荐,因为我们会误认为是整数比较。第二种方法也不推荐,false只有C99支持。
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。...不管是2的正幂次还是2的负幂次肯定都大于0,如果n小于0可以直接返回false,2的负幂次如2^-3等价于1/2^3一定是小数,由于入参为int所以这种情况也不存在。...2的幂次 十进制形式 二进制形式 减1二进制形式 2 ^ 0 1 00000001 00000000 2 ^ 1 2 00000010 00000001 2 ^ 2 4 00000100 00000100...2 ^ 3 8 00001000 00000111 2 ^ 4 16 00010000 00001111 2 ^ 5 32 00100000 00011111 2 ^ 6 64 01000000 00111111...= 1) { if (n % 2 == 1) { return false; } n /= 2;
LeetCode 题库的第 231 题 —— 2 的幂 ? 这题也是比较容易的一题,前提是找到规律即可。...如果从 10 进制的角度观察 2 的幂次方,可能并不容易发现规律,那么可以从 2 进制的角度进行观察。...举例如下: 2 = 2 ^ 1 = 10 4 = 2 ^ 2 = 100 8 = 2 ^ 3 = 1000 16 = 2 ^ 4 = 10000 观察 2 进制可以看出,2 的 N...次方只有 1 个 1,其余都是 0,那么判断一个数是否为 2 的幂,可以通过位移来进行判断。...的幂,直接返回 0,num 必须要大于 1,否则直接返回 1,因为当 num 等于 1 时要么是循环结束,要么 num 本身就是 1,如果是 1 的话,就是 2 的 0 次幂。
ch); return 0; } char ch = 'A';//这一段的意思是取一个字符变量ch,将字符A赋值给ch这个变量 printf("%c\n", ch);//这一段的意思是将变量ch...以字符的形式在屏幕上打印出来,%c——打印字符 通过这里我们可以知道要使用这些数据类型的格式是“数据类型 + 变量 = 值” 根据数据类型的不同,赋予的这些值也是有区别的 char这个数据类型我们可以将字符赋值给他的变量如...接下来我们来聊聊各个数据类型的一些特点。 char——字符数据类型 这里我是简单的理解为26个字母,这些字母不区分大小写,汉字的话计算机无法识别。...,如果赋值的是汉字,则计算机打印时无法识别 2.赋值的字符长度最大只能是4个,而且打印时只能读取最后一个字符,超过4个字符时,系统会报错字符过长。...,具体内容可以查阅下列内容: float和double的区别 总结一下float/double——浮点数据类型 1.两者数据类型都是将小数赋值给其对应变量; 2.打印float数据类型时使用的是%f——
指针±整数 数组在内存中是连续存储的,只要知道第一个元素的地址,后面的元素依次就能找到。 int arr[]={1,2,3,4,5}; 而所对应的下标为0,1,2,3,4。...2. 指针-指针 在指针变量相同类型时,计算出的是中间间隔的个数。...指针的运算关系 计算数组的元素个数时,我们使用了sizeof(数组名),而sizeof中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。...sizeof(arr[0])计算的是首元素的大小,单位也是字节。...,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。
1.打印0~100000的自幂数 #include #include int main() { int i = 0; for (i = 0; i的3次方+2的3次方+3的3次方!...=123,所以不是自幂数; 对于这个题目,1~100000,我们要确定他的位数,对这个数字进行除10操作,123进入后得1,除10之后是12,12进入后是2,除10是1,1进入后n是3,除以10后是0,...跳出循环,这个时候得到的n就是位数; 接下来就是对每个数字求和,这里用到pow函数,这个函数有2个参数,第一个是底数,第二个是次数,我们从最低位开始计算,每次的结果加到sum上,对数字进行取余操作得到高一位的数字...,这样就不会影响i的数值; 当i和sum相同的时候,就是符合条件的自幂数。
大数加法 2. 大数幂运算 3.大数求余 ---- 废话不多说,直接上代码了。 1....int d = (t1 + t2) % 10; c.insert(0, 1, d + 48); bit = (t1 + t2) / 10; } else { c.insert(0, 1, t1 +...大数幂运算 string getCountExp(int a, int b) { string a1 = to_string(a); int i = a1.length()-1;//a的最后下角标...bit = -1;//判断是否存在进位 string * arr = new string[a1.length()];//保存每次计算的数 int arr_i = 0; for (int x = 1;...= -1) { arr[arr_i].insert(0, 1, bit + 48); bit = -1; } //走完一圈 //计算每一位的数,最后相加 //temp_2=temp_2+arr[arr_i
题目描述 难度级别:简单 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。...示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = 16 示例 3: 输入: 218 输出: false 解题思路 法一 当整数...n大于1时,对其进行迭代,通过对连续2取模判断是否等于0,当遇到不为0时,直接输出false。...if (n < 1) return false while(n % 2 == 0) n /= 2 return n === 1 }; 位运算 通过n & (n - 1) 是否为...因为一个数是2的幂次方,则这个2进制数必然只有一个1,若求x-1,则它的1位变为0,1后面的0位变为1,在求与运算,这是值为0。
分析:首先,系数为正数的项的分母是4n-3(n为正数项的项数),为负数的项的分母为4n-1(n为负数项的项数),即分母的变化规律是1、3、5、7...的奇数数列,则第n项的分母为2n-1,第10000项的分母为...2*10000-1。...代码: #include int main(){ //计算π的值 int i; int z; double f;...double p=0; for(i=1;i<=100000000;i++){ //取模 z=i%2;...//每项 f=(double)1/(2*i-1); //z等于0的时候是负数 if(z==0){
在C语言中,有上面表中列出的几种整型数据类型。 看到这里你可能想问,一个整数而已,为什么会需要定义这么多不同的类型出来呢? 计算机通过晶体管的开关状态来记录数据。...要知道在发明C语言的年代,计算机存储资源是非常珍贵而稀缺的。对存储资源,程序员可能恨不得把一块掰成两块来用。如果只想表达0到100以内的数值,那么一个字节就足够了,何必用两个字节来存储呢? ...2. 用sizeof关键词来测量大小 和int一样,sizeof是C语言中的一个关键词。它是英文size of连起来的合成词。翻译成中文就是什么东西的大小的意思。...它能够测量C语言各种实体所占用的字节大小。 如果我们想看int所占用的字节大小c语言设计计算器,可以这样写sizeof(int)。执行后这段代码后,它的测量结果是一个整型。...并且c语言设计计算器,巧妙地应用了溢出,所得到的计算结果结果也是正确的。类似于钟表仅需要向前走就可以实现减法,计算机的电路设计中,也只需要设计加法电路。极大地简化了计算机内部电路的复杂程度。
领取专属 10元无门槛券
手把手带您无忧上云