当前位置: 首页 > news >正文

判断2的幂次方(多种算法)

【题目描述】
很简单,判断数N是不是2的次方。
【输入格式】
第一行一个整数T表示数据的个数
接下来T行,每行一个正整数N
【输出格式】
对于每个N,若N为2的整数次方输出“y”,否则输出“n”
【样例输入】
2
4
5
【样例输出】
y
n
【数据范围】
对于30%的数据,1<=T<=100000
对于50%的数据,1<=T<=1000000
对于100%的数据,1<=T<=5000000,1<=N<=2^64
(为了计算的方便,规定1s做10000000次运算)
【分析】
对于30%的数据,很明显就是一次次的试除。
对于50%的数据,也不难构造算法:预处理出所有2^0~2^64的值,然后二分查找N是否在这64个数中,若在输出y反之输出n。此算法时间复杂度大概6000000左右。
对于100%的数据,上面的算法显然不够用了,此时只能用1重循环解决。
列出所有2的幂次方的二进制表示,可以发现一个规律:都是由1个1打头,后面跟着若干个0(实际上这个规律是可以证明的,为节省篇幅此处不作详细介绍),这也就是说若N是2的幂次方且其2进制表示共有K位(1个1和K-1个0),则N-1的2进制表示共有K-1个1。列一个竖式,我们不难想到使用位运算中的and运算(相同取1,不同取0)。
若N是2的幂次方,则N and (N-1)一定等于0(自己列竖式就可以发现),反正不等于0,于是代码就可以轻而易举的写出来。

#include<iostream>
using namespace std;
int main()
{
  long long n;
  int t;
  cin>>t;
  while (t--) {
    cin>>n;
    if (n & (n-1)) cout<<"N"<<endl; else cout<<"Y"<<endl;
  }
  return 0;
}

转载于:https://www.cnblogs.com/JRX2015U43/p/6533464.html

相关文章:

  • VMware中装Win2012并配置Hyper-v
  • MySQL运维之神奇的参数
  • IOS技能点
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • Linux学习总结(22)——CentOS7.2安装Nginx
  • JS根据经纬度获取地址信息
  • 源码解读之工具--Source Insight
  • 如果就
  • Hydra用户手册
  • ABP学习日记1
  • 小博老师解析Java核心技术 ——JSwing高级菜单制作
  • Java JDBC中,MySQL字段类型到JAVA类型的转换
  • bzoj3894: 文理分科
  • javascript的对象
  • 西门子200实现远程监控和程序调试
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 30天自制操作系统-2
  • C++11: atomic 头文件
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • MySQL用户中的%到底包不包括localhost?
  • Spring声明式事务管理之一:五大属性分析
  • Vue学习第二天
  • 编写符合Python风格的对象
  • 大数据与云计算学习:数据分析(二)
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 漂亮刷新控件-iOS
  • 前嗅ForeSpider采集配置界面介绍
  • 首页查询功能的一次实现过程
  • 思考 CSS 架构
  • 小程序01:wepy框架整合iview webapp UI
  • 怎么将电脑中的声音录制成WAV格式
  • 智能合约Solidity教程-事件和日志(一)
  • Linux权限管理(week1_day5)--技术流ken
  • 移动端高清、多屏适配方案
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • !!java web学习笔记(一到五)
  • (+4)2.2UML建模图
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2015)JS ES6 必知的十个 特性
  • (4)(4.6) Triducer
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (算法设计与分析)第一章算法概述-习题
  • (转)【Hibernate总结系列】使用举例
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET 8.0 中有哪些新的变化?
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .pop ----remove 删除
  • :O)修改linux硬件时间
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ 转载 ] SharePoint 资料
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [codeforces]Levko and Permutation