EricYang

Tech Spot of Eric

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
View Code
 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int a, b;
 9     int p1, p2;
10     int rlt;
11 
12     while(scanf("%d%d",&a,&b)!=EOF)
13     {
14         rlt=0;
15         while(a!=0 && b!=0)
16         {
17             p1=a-(a&(a-1));  //p1为第一次出现一的位置
18             p2=b-(b&(b-1));
19             if(p1==p2)
20             {
21                 a&=(a-1);
22                 b&=(b-1);
23             }
24             else
25             {
26                 rlt++;
27                 if(p1<p2)
28                 {
29                     a&=(a-1);
30                     p1=a-(a&(a-1));
31                 }
32                 else
33                 {
34                     b&=(b-1);
35                     p2=b-(b&(b-1));
36                 }
37             }
38         }
39 
40         while(a!=0)
41         {
42             a&=(a-1);
43             rlt++;
44         }
45         while(b!=0)
46         {
47             b&=(b-1);
48             rlt++;
49         }
50         printf("%d\n",rlt);
51     }
52 
53     return 0;
54 }
posted on 2012-08-06 20:25  Eric-Yang  阅读(360)  评论(0)    收藏  举报