博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 12898 - And Or 与和或 (思路题)
阅读量:5891 次
发布时间:2019-06-19

本文共 1003 字,大约阅读时间需要 3 分钟。

思路就是有零一变化的位Or以后一定是1,And以后一定是0;那么如果b的二进制更长那么就把包含a的部分全部置为1或0,如果一样长那么就把不同的部分置为1或0。

今天被这题坑的地方:1默认是int,如果要移到32bits以上要转成long long用1LL,血的教训。以及,数组开得太极限,很容易出错。

#include
const int maxlen = 61;typedef long long ll;inline int int2bit(ll x,int *a){ int t = 0; while(x) { a[t] = x&1; x >>= 1; t++; } return t;}const ll one = 1;void solve(ll a,ll b,ll &Or,ll &And){ int b1[maxlen],b2[maxlen]; int l1 = int2bit(a,b1); int l2 = int2bit(b,b2); if(l2>l1){ ll t =(one<
= 0; i--){ if(b1[i]!=b2[i]) break; } ll t = (one<<(i+1))-1; Or = b|t; And = b&~t; }}int main(){ // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); int t; scanf("%d",&t); for(int i = 1; i <= t; i++){ ll Or,And,a,b; scanf("%lld%lld",&a,&b); solve(a,b,Or,And); printf("Case %d: %lld %lld\n",i,Or,And); } return 0;}

 

转载于:https://www.cnblogs.com/jerryRey/p/4652276.html

你可能感兴趣的文章
ADO.NET访问Access(文本数据库)数据操作(CRUD)
查看>>
razor 语法
查看>>
贝佳斯绿泥_百度百科
查看>>
安卓模拟器
查看>>
JSP/Servlet的编码原理
查看>>
java命令行HPROF Profiler
查看>>
css 禅意花园 笔记
查看>>
网站架构设计的误区
查看>>
Standard C++ Programming: Virtual Functions and Inlining
查看>>
html5 Web Workers
查看>>
iis 故障导致网站无法访问
查看>>
作业抄袭简单检测
查看>>
ASP.NET 回调技术(CallBack)
查看>>
Spark源码分析 – BlockManager
查看>>
JS中的this
查看>>
[20140117]疑似checkpoint堵塞数据库连接
查看>>
ibatis.net:第一天,什么是 mybatis.net ?
查看>>
人生, 不要在别扭的事上纠结
查看>>
C的面向对象编程
查看>>
日志服务器架构设计
查看>>