字符串密室寻宝

Posted scott527407973

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串密室寻宝相关的知识,希望对你有一定的参考价值。

问题 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

 














以上是关于字符串密室寻宝的主要内容,如果未能解决你的问题,请参考以下文章

聪明人的游戏提高篇:密室寻宝(find)

华为OD机试 - 密室逃生游戏(Java) | 机试题+算法思路+考点+代码解析 2023

华为OD机试 - 密室逃生游戏(Java) | 机试题+算法思路+考点+代码解析 2023

华为OD机试真题Java实现密室逃生游戏真题+解题思路+代码(2022&2023)

华为OD机试 2023最新 密室逃生游戏(C++ 100%)

华为机试真题 C++ 实现密室逃生游戏2022.11 Q4 新题