7279
来源:互联网 发布:数据流程图符号含义 编辑:程序博客网 时间:2024/05/01 09:20
题目链接:点击打开链接
题意:A代表一到多个1,B代表一到多个0,组成二进制不长于63位的数字。形式为ABAB...A或ABABAB...AB;
分析:一个令我印象深刻的位运算题目,同时巩固了对set使用的熟练程度,第一次使用unsigned long long着实不适应;
思路详见代码:
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<set>#define ull unsigned long longusing namespace std;char str[100];ull n,m; set<ull> ss;void init(){int index=0;for(int i=1;i<64;i++){for(int j=0;j<63;j++){if(i+j<=63)//暴力所有长度小于63的情况一共2015种 {int cnt=i;ull A=1ull;//初始化注意事项加ull for(int k=1;k<i;k++){A=A<<1;A++;}ss.insert(A);ull sta=A;while(cnt<=63)//位运算一定用位数来判停,最多循环32次,复杂度2015*32,1000ms足够,况且是打表{sta=sta<<j;cnt+=j;if(cnt>63)break;ss.insert(sta);sta=sta<<i;sta+=A;cnt+=i;if(cnt>63)break;ss.insert(sta);}}}}}void cal(){int ans;set<ull>::iterator it;for(it = ss.begin() ; it != ss.end() ; ++it) { if(*it>=n && *it<=m) ans++; } printf("%d\n",ans);}int main(){init();//printf("%d\n",ss.size());一共4809个符合情况的,直接遍历即可。 while(~scanf("%llu%llu",&n,&m)){cal();}return 0;}
阅读全文
0 0
- 7279
- UVALive-7279
- 7279键盘驱动程序
- UVALive 7279 Sheldon Numbers
- 自动小车7279a程序
- UVALive-7279 - Sheldon Numbers【暴力】
- UVALive 7279 Sheldon Numbers 【位运算】【暴力】
- UVALive 7279 Sheldon Numbers(位运算、暴力、想法)
- UVALive 7279 Sheldon Numbers(位运算、暴力)
- 二维数组旋转90度、180度、270度
- 贾志豪组合游戏论文个人总结(Anti-SG,Every-SG,翻硬币游戏,无向图删边)
- android调用系统相册将图片复制到指定目录下并显示复制进度
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 7279
- http://www.cnblogs.com/xinxin-csharp/p/6146770.html
- 线程安全与共享资源
- 查找排序算法
- 【Python2.7 学习笔记】Python 基础(四)调试
- LeetCode
- POJ1511 Invitation Cards(SPFA)
- Android关于沉浸式状态栏总结
- Python高级教程之作用域