不用任何判断语句,不开方计算一个数是不是2的N次方

1170:计算2的N次方 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 23064 通过数: 12225任意给定一个正整数N(N 阅读详情

        关于不用任何判断语句的第二个小问题,也很有趣的。题目如下:请实现不用任何判断语句,不开方计算一个数是不是2的N次方。

        这个问题比上个问题一开始感觉更麻烦,不过有了上一个问题答案的提示,很快就想到了用位运算来做,然后写出来了几个2的N次方的数看了一下规律,想到了以下的解决方法:



		import java.util.Scanner;

		public class Main {
			public static void main(String args[]) {
				Scanner in = new Scanner(System.in);
				System.out.println("Please Input two Integer:");
				int a = in.nextInt();
				String[] output = new String[2];
				output[0]="是";
				output[1]="不是";
				a = a&(a-1);
				try{
					System.out.println(output[a/a]);
				}catch (ArithmeticException e){
					System.out.println(output[0]);
				}
			}
		}
	


因为一个2的N次方的数,其二进制一定是在第N+1位上有一个1,其他各位都是0,而再减1以后,则刚好按位取了反,与是按位与就可以得到0,而如果不是2的N次方,减1则不能得到其按位取反的数。你想到了吗?

计算2的N次方(高精度) 题目描述 任意给定一个正整数N(N≤1000),计算2的n次方的值。 输入 输入一个正整数N。 输出 输出2的N次方的值。 样例输入 Copy 5 样例输出 Copy 32 #include<cstring> //memset()的头文件 #include<iostream> using namespace std; int n,ans[2500],j; //由于数字太大,只能用数组表示 int main() { cin>>n; memset(ans,- 阅读详情

相关推荐

使用 Wireshark 分析 PPPoE 流量中的 BRAS 名称 AC-Name

客户端发出广播请求,寻找 PPPoE 服务器。: BRAS 服务器响应 PADI 请求,提供服务并包含AC-Name。: 客户端选择一个 BRAS 并发起连接请求。: BRAS 确认连接并分配会话 ID。在这些阶段中,AC-Name是 BRAS 提供的一个关键字段,用于标识服务器名称。

caca_66的博客 2066

C语言(在不使用公式,判断语句,循环语句求1+2+3+...+100的值)

#include int fun0(int n) { return 0; } int fun1(int n) { static int(*p[2])(int) = {fun0,fun1}; return n+p[!!n](n-1); } int main() { printf("%d\n",fun1(100)); //这里fun1内的数字可以随意修改,修改之后为所求值为1+...n

Anxihopkins的博客 2128

使用 Fargate 在 AWS ECS 上运行 Spring Boot 应用程序

本文介绍了使用AWS Fargate支持的ECS部署SpringBoot应用的完整流程。主要内容包括:1)将SpringBoot应用打包为Docker镜像并推送至ECR;2)创建任务定义配置CPU、内存和网络等参数;3)设置ECS服务管理任务运行;4)配置负载均衡器分配流量;5)设计VPC网络和安全组规则确保安全访问;6)使用SSM参数存储管理敏感信息。整个过程实现了无服务器化部署,既保持了应用控制权,又免除了基础设施管理负担,是扩展Web服务的可靠方案。

介绍AWS Azure GCP devops Terraform 等技术 511

js算法一则:不用if。。while。。for等循环和判断语句实现1+2+3+...+n的和

本人目前想到两种方式: 1、求和公式:  function sum1 (n) { return n*(n+1)/2; } 2、短路+递归 function sum2(n) { n && (n+=f(n-1)); return n; } 欢迎大神指点~

瞬间空白的博客 3487

Dify与第三方平台(飞书、微信、钉钉)LangBot机器人对接实战

调用链路:飞书用户发消息 → 飞书开放平台事件回调 → LangBot 服务 → Dify 应用接口 → Dify 知识库 + 大模型生成答案 → 原路返回飞书聊天框Dify:承载知识库、提示词配置、大模型调用能力;LangBot:多 IM 渠道适配器,统一对接各大 IM 开放平台与 Dify API;飞书开放平台:提供机器人消息收发、事件推送能力。LangBot 作为中间转发服务,一端对接 Dify 应用 API,一端对接飞书开放平台机器人接口;

悦分享 267

C# WinForms 多语种切换实现:打造国际化应用程序

合理实现多语种切换功能可以显著提升应用程序的国际化水平。模块化设计:将本地化逻辑模块化,便于管理和维护。异常处理:始终捕获和处理可能的异常,确保程序的健壮性。资源管理:合理管理资源文件,避免重复和遗漏。测试:在不同语言环境下进行全面测试,确保所有字符串都能正确显示。文档和注释:为关键代码添加详细的文档和注释,便于后续维护。

墨夶的博客 1691

算法——不使用用判断语句求叠加

求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 leetcode 解题思路:如何不用上面的条件判断语句,还是能判断传入参数的大小呢?这里就可以利用逻辑与和或的运算规则。 逻辑与 && 当运算符前面的条件为假,则不执行运算符后面的语句。 逻辑或 || 当运算符前面的条件为真,则不执行运算符后面的语句。 这样,我们可以把n是否大于零的判断语句放在逻辑与前面,当n大于零,则递归求和;当n不大于零,那.

Think Different. 169

激光焦点动态跟踪技术实战大揭秘:电容式与同轴视觉的巅峰对决

激光焦点动态跟踪技术是保证激光加工质量的关键因素。本文对比评测了电容式和同轴视觉两种主流技术:电容式响应速度快、成本低,适合高速稳定加工环境,但易受电磁干扰;同轴视觉精度高、抗干扰强,适合精密加工和复杂工件,但成本较高且处理速度受限。评测结果表明,企业应根据加工需求、预算和环境选择合适技术。未来该技术将向智能化、多技术融合方向发展,为工业应用提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 124

不使用数学函数开方运算的情况下,求解开方运算

1 二分法           浮点开方也就是给定一个浮点数x,求。这个简单的问题有很多解,我们从最简单最容易想到的二分开始讲起。利用二分进行开平方的思想很简单,就是假定中值为最终解。假定下限为0,上限为x,然后求中值;然后比较中值的平方和x的大小,并根据大小修改下限或者上限;重新计算中值,开始新的循环,直到前后两次中值的距离小于给定的精度为止。需要注意的一点是,如果x小于1,我们需要将上限

Purplenigma的专栏 5414

MATLAB - Gazebo 联合仿真 —— 使用 UR10 机械臂检测和采摘水果

本示例演示如何在 Gazebo 物理模拟器中设置 Universal Robotics UR10 机械臂和仿真环境。您需要配置一个机器人从树上摘苹果的仿真环境。本示例演示如何利用这些工具箱,使用 Universal Robotics UR10 机械手模拟机器人检测并从树上摘取苹果。Robotics System Toolbox™ - 在 Simulink® 和 Gazebo 中对机械手进行建模、规划和模拟。Navigation Toolbox™ - 生成三维环境的占用图。

机器人控制与仿真应用 4182

Python 爬虫实战:爬取股票数据做 K 线图可视化

摘要:本文介绍基于Python的股票数据爬取与K线图可视化全流程技术方案。通过Requests库抓取东方财富网股票数据,使用Pandas进行清洗处理,并利用mplfinance库实现专业K线图绘制。文章详细讲解了数据爬取接口分析、反爬策略配置、K线图绘制方法(包含基础K线图和带均线的进阶版本),以及核心统计指标计算。该方案可应用于股票价格趋势分析,为投资决策提供数据支持,同时强调了数据使用的合规性和技术优化方向。

2503_91057718的博客 2045

怎样判断一个数是不是2的幂次方

怎样判断一个数是不是2的幂次方

峰爸的博客 1942

使用 Simulink + Simscape Electrical 实现一个三相半控桥式整流器的仿真模型

本文详细介绍了使用Simulink搭建三相半控桥式整流器仿真模型的方法。主要内容包括系统结构设计、建模步骤(从创建项目到参数配置)、移相触发控制的实现,以及阻感负载下的动态响应分析。通过合理设置三相电源、整流器模块、触发控制和测量模块,实现了输出电压和电流波形的仿真观测。文章还提供了优化建议,如添加滤波器、实时控制等改进方向,为电力电子变换器的仿真研究和性能优化提供了实用指导。

amy_mhd的博客 139

【面试题】判断一个数是否为2的N次方---终极解法来啦

大家好我是好好学习天天编程的天天 一个整天在互联网上种菜和砍柴的程序员~ 大量面试题中会考算法,当然其中也有一些小算法,是比较考察候选人思维的,所以出现的频次比较高。就比如下面这个: 题目描述: 判断一个数是否为2的N次方 判断一个数是否为2的幂次方 方法1 其实是一个题,知识不同的描述方式啦 那怎么求解呢? 很多人的思路就是直接做除2的操作么,但是这种思路,其实很难验证,除到什么时候算是结束呢?所以不合适。 那相反的思路,不断的算出2的幂次方的数来穷举,直到算出的等于或者超出这个数本身。如果是等于了

鹏哥C语言,B站鹏哥C语言主理人,C语言教程常年霸榜第一名 6275

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

用python判断一个数是否为2的n次方

用Python判断一个数是否是2的n次方。------人生苦短,python当歌

Zesheng_Wang的博客 7314

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Algorithms_入门基础_如何使用最高效的方式来判断一个数是否是2的N次方

文章目录QuestionAnswer 1.0 Question 引入… 先看个阿里巴巴的面试题吧 如何使用最高效的方式来判断一个数是否是2的N次方? 先思考下哈 … … … … … … … … … … … … … … Answer 1.0 分析下: 2的N次方嘛 ,举个例子 2 4 8 16是 2的N次方, 6 , 10 不是2的N次方。 2的N次方 ====> 就可以看成 这...

小工匠 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python编写2的n次方_2的n次方(python计算2的n次方的算法)

2的n次方,就是n个2相乘。2^N 意思就是2*2*2*2*…*2(n个2相乘)2的2次方,也叫做2的平方.也就是2个2相乘.记作22。2的3次方,也叫做2的立方.也就是3个2相乘.记作23.2^n=2^(n/2)*复2^(n/2)=……以此类推。举例说明如下:2^8=2^4*2^4=2^2*2^2*2^2*2^2=4*4*4*4=256 扩展资料:一个数的零次方;任何非零数的0次方都等于1。通常...

weixin_39655049的博客 1万+

计算2的n次方

描述: 任意给定一个正整数N(N&lt;=100),计算2的n次方的值。 输入: 输入一个正整数N。 输出: 输出2的N次方的值。 样例输入: 5 样例输出: 32 核心思想: 计算2的n次方也是依次相乘2,大于个位则进位,从后向前保存元素,所以要令初始值为1. 算法: #include&lt;stdio.h&gt; int main() { int ...

斗鹰的技术专栏 1万+

快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!

将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。         如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。        最快速的方法:       (number & number - 1) ==

Hackbuteer1的专栏 4万+

在C语言中如何判断一个数是不是2的幂次方,判断一个数是否为2的幂次方的方法...

对于如何判断一个数是否为2的幂次方这个问题是很多新手们都好奇的,今天我们就带着这个疑问跟小编去看看判断一个数是否为2的幂次方的方法吧,感兴趣的小伙伴们赶紧收藏起来。将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原...

weixin_33810040的博客 4138

判断一个数是不是2的n次方

现在我们要写一个代码判断一个数是否是2的n次方 这里有一种很简单:如果一个数是2的n次方,那么只要对这个数一直除以2;最后一定会得到1 也就是说,如果一个数是2的n次方,一直除以2一定会得到2 所以我们可以设置一个while循环,让需要判断的数字一直除以2,如果结果是1,那么这个数就是2 的n次方 代码如下: #include<stdio.h> int main() { float i = 0; scanf("%f", &i); while (1) { i.

爱编程的晖哥的博客 4118

判断一个整数是不是 2 的 n 次方

2 的 0 次方是 1 二进制程表示 1 2 的 1 次方是 2 二进制程表示 10 2 的 2 次方是 4 二进制程表示 100 2 的 3 次方是 8 二进制程表示 1000 2 的 4 次方是 16 二进制程表示 10000 2 的 5 次方是 32 二进制程表示 100000 2 的 m 次方的二进制表示为 1 后面跟 m 个 0 2 的 m 次方减1的二进制表示为 m 个 ...

Yp2800的专栏 1086

C语言——计算2的N次方

Description   任意给定一个正整数N(N≤100),计算2的N次方的值。 Input   输入只有一个正整数N。 Output   输出2的N次方的值。 Sample Input   5 Sample Output   32 Source #include&lt;stdio.h&gt; #include&lt;string.h&gt; int main(...

肥不溜秋大梅子 1万+

python2的n次方代码_python实现判断一个数是否是2的n次方

python实现判断一个数是否是2的n次方2020年3月9日来源: 网络转载算法1:构造法对1进行移位操作,即从1开始产生2 0 , 2 1 , 2 2 ⋅ ⋅ ⋅ 2^0,2^1,2^2···20,21,22⋅⋅⋅,如果产生的数相等,则该数是2的n次方,如果产生的数小于该数,则继续移位,如果产生的数大于该数,则该数不是2的n次方。pytho...

weixin_39942213的博客 1198

教你用C计算2的n次方

C语言库函数pow来计算2的n次方:功能介绍:源代码:演示效果: 功能介绍: 首先我们给程序输入一个数(2的几次方),程序会计算并输出答案,逻辑很简单对吧,直接上代码了哦! 源代码: //文件名 pow函数.c 内容如下 #include <stdio.h> #include <stdlib.h> int main() { double a; //双精度小数型变量 int sum; //整型变量 printf("\a\t\t\tAb

akbarmain的博客 9931
上一篇: IF 没有 IF (由“不使用IF等条件判断,输出两个数中大的那个”产生的一些随想)
下一篇: Android游戏框架AndEngine使用入门
AngusSL
博客等级 码龄17年 41粉丝 31原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值