poj 2020 集合逻辑_codestorm_新浪博客

先贴代码:(转自: http://blog.csdn.net/shengxiwgzly/article/details/6327727




  1. #include  
  2. using namespace std;  
  3.   
  4. int yu(int a, int b)  
  5. {  
  6.     int t[7], i, num=0;  
  7.     for(i=6; i>=0; i--)  
  8.     {  
  9.         t[i] = (a)|(b);  
  10.         a /= 10;  
  11.         b /= 10;  
  12.     }  
  13.     for(i=0; i<7; i++)  
  14.     {  
  15.         num += t[i];  
  16.         num *= 10;  
  17.     }  
  18.     return num/10;  
  19. }  
  20.   
  21. int bing(int a, int b)  
  22. {  
  23.     int t[7], i, num=0;  
  24.     for(i=6; i>=0; i--)  
  25.     {  
  26.         t[i] = (a)&(b);  
  27.         a /= 10;  
  28.         b /= 10;  
  29.     }  
  30.     for(i=0; i<7; i++)  
  31.     {  
  32.         num += t[i];  
  33.         num *= 10;  
  34.     }  
  35.     return num/10;  
  36. }  
  37.   
  38. int main()  
  39. {   
  40.     int n, x, i, k, num[10]={1111110, 110000, 1101101, 1111001, 110011, 1011011,1011111, 1110000, 1111111, 1111011};  
  41.     int p1, p2, p3, p4, q1, q2, q3, q4, h2, m1, m2;  
  42.     cin>>n;   
  43.     while(n--)  
  44.     {  
  45.         cin>>p1>>p2>>p3>>p4>>q1>>q2>>q3>>q4;  
  46.         k = 1;  
  47.         if(q1) { cout<<1; k=0;}  
  48.         x = yu(p2, q2);  
  49.         for(i=k; i<10; i++)  
  50.             if(bing(x, num[i])==q2)   
  51.             {  
  52.                 h2 = i;  
  53.                 break;  
  54.             }  
  55.         x = yu(p3, q3);  
  56.         for(i=0; i<6; i++)  
  57.             if(bing(x, num[i])==q3)   
  58.             {  
  59.                 m1 = i;  
  60.                 break;  
  61.             }  
  62.         x = yu(p4, q4);  
  63.         for(i=0; i<10; i++)  
  64.             if(bing(x, num[i])==q4)   
  65.             {  
  66.                 m2 = i;  
  67.                 break;  
  68.             }  
  69.   
  70.         printf("%d:%d%d\n", h2, m1, m2);  
  71.     }  
  72.     return 0;  
  73. }  

总结:
1.本身是道水题,但是在逻辑处理时脑子起了泡。这是一个集合问题,本以为yu<=y'(y'是实际可亮边集合),然后yu∩num[i]<=y',可是后来发现yu=p∪q,即(p∪q)∩num[i]=q是成立的。(记号简略,估计以后自己也卡不懂了)
2.可以按整数度数,存为十进制,全部用位运算,省略bing()、yu()函数













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值