【字符串】密室寻宝

问题 K: 【字符串】密室寻宝

时间限制: 1 Sec  内存限制: 64 MB
 1 #include <iostream>
 2 #include<string>
 3 using namespace std;
 4 int p,q,a[100],b[100],c[100];
 5 int main()
 6 {
 7     cin>>p>>q;
 8     int cnt1=0,cnt2=0;
 9     while(p!=0)
10     {
11         a[cnt1++]=p%2;
12         p/=2;
13     }
14     while(q!=0)
15     {
16         b[cnt2++]=q%2;
17         q/=2;
18     }
19     int cnt=0,ans[100];
20     for(int i=0;i<8;i++)
21     {
22         c[i]=a[i]&b[i];
23         if(c[i]==1){
24             ans[cnt++]=i+1;
25         }
26     }
27     if(cnt<2)
28     {
29         cout<<"0"<<endl;
30         cout<<"Close"<<endl;
31     }
32     else
33     {
34         for(int i=0;i<cnt;i++)
35         {
36             if(i)   cout<<" ";
37             cout<<ans[i];
38         }
39         cout<<endl;
40         cout<<"Open"<<endl;
41     }
42 //    cout << "Hello world!" << endl;
43     return 0;
44 
提交: 4  解决: 3
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

哈利・波特不经意间进入了一座古墓,古墓入口有一道大门,内部有六个密室,每个密室中藏有一件兵器。已知需要两个密码才能从里面打开密室和大门,取出密室内的兵器后从大门撤出。
两个密码均是不大于63的十进制整数,将其转化为八位二进制数后对应位进行“与”运算(运算的规则是:当两个位均为“1”时,结果为“1”,否则结果为“0”)。将“与”运算的结果从右往左数,当第n位为1时,表示可以打开第n个密室,取出其中的兵器;只有当取到至少两件兵器时,方可打开大门撤出。
现在哈利・波特任意给你两个密码,请你帮他设计一个程序,算算可以从哪些密室取出兵器,并可否从大门撤出。

输入

第1行输入第一个密码P;
第2行输入第二个密码Q。

输出

第1行:按从小到大的顺序输出可以打开密室的编号。若没有可以打开的密室,则输出“0”;
第2行:若可打开大门,则输出为“Open”,否则输出“Close”。

样例输入

2
5

样例输出

0
Close

根据题目意思,直接写即可!

 1 #include <iostream>
 2 #include<string>
 3 using namespace std;
 4 int p,q,a[100],b[100],c[100];
 5 int main()
 6 {
 7     cin>>p>>q;
 8     int cnt1=0,cnt2=0;
 9     while(p!=0)
10     {
11         a[cnt1++]=p%2;
12         p/=2;
13     }
14     while(q!=0)
15     {
16         b[cnt2++]=q%2;
17         q/=2;
18     }
19     int cnt=0,ans[100];
20     for(int i=0;i<8;i++)
21     {
22         c[i]=a[i]&b[i];
23         if(c[i]==1){
24             ans[cnt++]=i+1;
25         }
26     }
27     if(cnt<2)
28     {
29         cout<<"0"<<endl;
30         cout<<"Close"<<endl;
31     }
32     else
33     {
34         for(int i=0;i<cnt;i++)
35         {
36             if(i)   cout<<" ";
37             cout<<ans[i];
38         }
39         cout<<endl;
40         cout<<"Open"<<endl;
41     }
42 //    cout << "Hello world!" << endl;
43     return 0;
44 }
View Code
如有错误,请指正,感谢!
原文地址:https://www.cnblogs.com/scott527407973/p/9314636.html