zoukankan      html  css  js  c++  java
  • 【字符串】密室寻宝

    问题 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
    如有错误,请指正,感谢!
  • 相关阅读:
    关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较
    php 使用curl模拟登录discuz以及模拟发帖
    php 使用curl模拟登录人人(校内)网
    PHP PDO函数库详解
    比CMD更强大的命令行WMIC
    强大的命令行工具wmic
    wmic 命令的一个汇总,功能很强大
    Oracle 11g default profile 默认启用密码过期180天 ORA-28001错误处理
    Oracle 11g密码过期问题解决方案
    SQLPlus 在连接时通常有四种方式
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9314636.html
Copyright © 2011-2022 走看看