zoukankan      html  css  js  c++  java
  • Kattis

    iBoard

    includegraphics[scale=0.18]{iBoard.png}

    After years of success with a single-button mouse, a well known computer company has decided to offer a similarly simplified interface for the keyboard. The iBoard has only two keys. The user types by entering the ASCII code for each letter. To help people type faster, the iBoard uses key press and key release transitions to enter characters. Pressing or releasing the right key enters zero for the next bit. Pressing or releasing the left key enters a one. The binary code for each 7-bit ASCII character is entered starting with the least significant bit and working up to the most significant bit. For example, to type a capital Z, the user simply has to press the right key, press the left key, release the right key, release the left key, press the left key, press the right key and then release the left key.

    Although its creators would like you to believe that the iBoard is far superior to any other keyboard, it does have one disadvantage. The operator may not be free to get up and go to the bathroom as soon as he or she needs to. After typing a string of characters, the user may be stuck with one or more fingers pressing iBoard keys. Releasing these keys would begin typing the next character. Your job is to write a program that determines when it’s safe to get up and leave the keyboard. Your program should read input strings and report if it’s safe to get up and leave the iBoard after typing each string.

    Input

    Input contains up to 100 strings, one per line, terminated at end of file. Each string has between 1 and 100 ASCII characters. End-of-line characters should not be considered part of each string.

    Output

    For each input string, print out a line reporting either trapped or free. The user is considered trapped if one or more iBoard keys is still being pressed after the string is typed. Otherwise, the user is free. You should assume that no iBoard keys are being pressed when the user starts typing the string.

    Sample Input 1Sample Output 1
    Keep up the good work.
    iBoard Rules!!
    qwerty
    
    trapped
    free
    trapped
    

    题意

    死于读题。。看样例我以为是有关键词“iBoard”就输出free,然后连续wa,这题就我Wa最多。。咳咳,让我们来个正确的题意。

    将每个字符的ascii码放进去化成二进制,并且不足7位就补0
    所有的东西,除了换行符,都要敲入的,空格一样要读入,用getline读。
    如果是1 则按下左键,如果按着就松开, 如果是0 就按右键,如果按着就松开,输完一段话,如果两个手指头还有一个地方按着,则视为被绑住了 trapped, 否则free。

    思路

    这就成了一个化二进制的问题了,仅此而已

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int l = 0, r = 0;
    void bin2(int a) {
        int has = 0;
        while (a) {
            if (a & 1) l = !l;
            else r = !r;
            a /= 2;
            has++;
        }
        while (has++ < 7)r = !r;
    }
    int main() {
        string s;
        while (getline(cin, s)) {
            l = r = 0;
            for (int i = 0; i < s.size(); i++) {
                bin2((int)s[i]);
            }
            if (l || r)
                printf("trapped
    ");
            else printf("free
    ");
        }
    }
  • 相关阅读:
    【Java】《Java程序设计基础教程》第三章学习
    【Python】编程小白的第一本python(最基本的魔法函数)
    【Python】编程小白的第一本python(基础中的基础)
    bootstrap中的col-xs-*,col-sm-*,col-md-* 关系
    java基础面试题总结
    人生中第一次面试(阿里一面)
    阿里云服务器ip:端口号无法访问
    redis基本指令
    linux基本指令
    centos安装redis
  • 原文地址:https://www.cnblogs.com/zhien-aa/p/6296049.html
Copyright © 2011-2022 走看看