24h購物| | PChome| 登入
2011-06-01 22:05:02| 人氣1,527| 回應0 | 上一篇 | 下一篇

d681. BinaryCount

推薦 0 收藏 0 轉貼0 訂閱站台

http://zerojudge.tw/ShowProblem?problemid=d681

內容 :

對一個二進位的數字每一個位元進行 & 、| 運算

運算規則如下

1 & 1 = 1

1 & 0 = 0

0 & 1 = 0

0 & 0 = 0

1 | 1 = 1

1 | 0 = 1

0 | 1 = 1

0 | 0 = 0

 

輸入說明 :

輸入為一個二進位字串加上運算子 and 或 or

輸入的二進位字串<32  (5 bit)

且保證每個二進位字串長度一樣(5bit)

在每一行的最後會有一個空白

例如

10001 or 10000 and 11101 and 01001

        ^  ^       ^     ^       ^    ^        ^

依序是一個運算元+空白+運算子+空白+運算元+...最後是運算元+一個空白

每個運算元的長度都是5bit ,但不一定都是5個運算元+4個運算子

 

輸出說明 :

輸出轉換後的運算式 與答案

 

範例輸入 :

10001 or 10000 and 11101 and 01001 
10111 or 10111 or 10010 or 00101 
01000 and 01001 or 10011 and 11101 
10111 and 00011 or 10010 or 11011 
01001 and 10110 or 10010 and 11101 

範例輸出 :

10001||10000&&11101&&01001 = 00001
10111||10111||10010||00101 = 10111
01000&&01001||10011&&11101 = 11001
10111&&00011||10010||11011 = 11011
01001&&10110||10010&&11101 = 10000

提示 :

使用字串就對了!!

第一次出題,測試一下,如果測資有誤請不要一直測試,請寫信給我謝謝!!

共有三組測資,第一組有5個第二組100個第三組1000個

(2010 0402 13:22更新測資,已重測)

(2010 0406 08:21 加強測資)

出處 :

葆葆 (管理:d000032002)

作法 : 模擬

/**********************************************************************************/
/*  Problem: d681 "BinaryCount" from 葆葆                                       */
/*  Language: C                                                                   */
/*  Result: AC (15ms, 272KB) on ZeroJudge                                         */
/*  Author: morris1028 at 2011-06-01 20:36:22                                     */
/**********************************************************************************/


#include<stdio.h>
main() {
    char S[6], D[6], c, d;
    int Ans[6] = {}, a;
    while(scanf("%s", S) == 1) {
        printf("%s", S);
        for(a = 0; a < 5; a++)    Ans[a] = S[a]-'0';
        while(scanf("%s %s%c%c", D, S, &c, &d) == 4) {
            if(D[0] == 'r' || D[1] == 'r') {
                for(a = 0; a < 5; a++)
                    Ans[a]|=(S[a]-'0');
                printf("||%s", S);
            }
            else {
                for(a = 0; a < 5; a++)
                    Ans[a]&=(S[a]-'0');
                printf("&&%s", S);
            }
            if(d == '\n') break;
        }
        printf(" = ");
        for(a = 0;a < 5; a++)
            printf("%d", Ans[a]);
        puts("");
        for(a = 0; a < 5; a++)
            Ans[a] = 0;
    }
    return 0;
}

台長: Morris
人氣(1,527) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: ZeroJudge |
此分類下一篇:a104. 排序
此分類上一篇:d828. Pascal's triangle's secret (II)

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文