LightOJ-1042-math
来源:互联网 发布:js mouseout 编辑:程序博客网 时间:2024/06/06 06:58
题目大意:给定一个数,求一个比它大的数,使得他们二进制一的个数相同并且那 个数要最小;
题目解析:考虑他的后缀肯定会出现011...1100...00的形式,我们需要做的就是把红色的0变成1,然后统计后面1的个数,设为n,去掉一个1,并且把所有1右移至顶端,最后形如100...00011...11的形式,注意如果所有字母都是1或者是11...1100...000的形式,要在最左端添加一个1;
AC代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>using namespace std;typedef long long ll;ll n,temp;int main(){int c,cas,i,posi,posj,flagi,flagj,cnt,flag,ans;scanf("%d",&cas);for(c=1;c<=cas;c++){scanf("%lld",&n);temp=n;posi=-1;flagi=0;posj=-1;flagj=0;cnt=0;flag=0;ans=0;while(n!=0){if(n%2==1){posi=cnt;flag=1;flagi=1;}if(n%2==0&&flagi==0){ans++;} if(n%2==0&&flagj==0&&flag==1){posj=cnt;flagj=1;}n/=2;if(flagi==1&&flagj==1)break;cnt++;}if(posj==-1)posj=cnt;printf("Case %d: %lld\n",c,temp+(1<<(ans))+(1<<(posj-ans-1))-1);}return 0;}
0 0
- LightOJ-1042-math
- LightOj 1078 Basic Math
- LightOj 1148 Basic Math
- LightOJ Math_Basic Math 专题
- LightOJ-1095-math
- LightOJ-1058-math
- LightOJ-1132-矩阵快速幂,math
- LightOJ 1042 - Secret Origins
- lightoj 1042 练一练位操作
- LightOJ 1042 Secret Origins
- lightoj 1042 - Secret Origins
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- [LightOJ
- LightOJ
- hihocoder 1032 最长回文子串
- 探讨一下古代诗人的科学素养
- 华为服务器售后专业认证培训视频教程
- 字符串 数组
- APP组件化之路
- LightOJ-1042-math
- FastDFS简介
- Ubuntu网络连接设备未托管
- JSP 标准标签库(JSTL)一个报错
- Activity横竖屏切换,Android游戏,电子书都是非常重要的
- PHP内核--探究内存管理与缓存机制
- php被遗忘的一些功能强大的字符串处理函数
- 定制Hibernate的PropertyAccessor实现XML的反序列化
- android:常用权限