UVA10144 ZOJ2044 Expression

Posted 海岛Blog

tags:

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

Expression
Time Limit: 2000 msMemory Limit: 65536 KB

It is known that Sheffer stroke function (NOT-AND) can be used to construct any Boolean function. The truth table for this function is given below:

Truth table for Sheffer stroke function

x y x|y
0 0 1
0 1 1
1 0 1
1 1 0

Consider the problem of adding two binary numbers A and B, each containing N bits. The individual bits of A and B are numbered from 0 (the least significant) to N-1 (the most significant). The sum of A and B can always be represented by N+1 bits. Let’s call most significant bit of the sum (bit number N) the overflow bit.

Your task is to construct a logical expression using the Sheffer stroke function that computes the value of the overflow bit for arbitrary values of A and B. Your expression shall be constructed according to the following rules:

Ai is an expression that denotes value of ith bit of number A.
Bi is an expression that denotes value of ith bit of number B.
(x|y) is an expression that denotes the result of Sheffer stroke function for x and y, where x and y are expressions.
When writing the index, i, for bits in A and B, the index shall be written as a decimal number without leading zeros. For example, bit number 12 of A must be written as A12. The expression should be completely parenthesized (according to the 3rd rule). No blanks are allowed inside the expression.

Input

The input contains a single integer N (1 <= N <= 100).

Output

Write to the output an expression for calculating overflow bit of the addition of two N-bit numbers A and B according to the rules given in the problem statement.

Note: The stroke symbol ( | ) is an ASCII character with code 124 (decimal).

The output file shall not exceed 50*N bytes.

This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

The output format consists of N output blocks. There is a blank line between output blocks.

Sample Input

1

2

Sample Output

((A1|B1)|(((A0|B0)|(A0|B0))|((A1|A1)|(B1|B1))))

问题链接UVA10144 ZOJ2044 Expression
问题简述:(略)
问题分析:简单题,不解释。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* UVA10144 ZOJ2044 Expression */

#include <iostream>
#include <cstdio>

using namespace std;

const int N = 100;
char s[N + 1][5000];

int main()
{
    sprintf(s[0], "((A0|B0)|(A0|B0))");
    for (int i = 1; i <= N; i++)
        sprintf(s[i], "((A%d|B%d)|(%s|((A%d|A%d)|(B%d|B%d))))", i, i, s[i-1], i, i, i, i);

    int t, n;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);

        puts(s[n - 1]);
        if (t) putchar('\\n');
    }

    return 0;
}

以上是关于UVA10144 ZOJ2044 Expression的主要内容,如果未能解决你的问题,请参考以下文章

UVA542 POJ2261 ZOJ1950 France ‘98概率

UVA10670 POJ1907 ZOJ2372 Work Reduction贪心

UVA10081 POJ2537 ZOJ1883 Tight WordsDP

UVA10277 POJ2646 ZOJ1856 Boastin‘ Red Socks数学

UVA10120 ZOJ1229 Gift?!DFS+BFS

POJ2689 ZOJ1842 UVA10140 Prime Distance筛选法