Algorithm


Problem Name: 2 AD-HOC - beecrowd | 2342

Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2342

Overflow

 

Por OBI - Olimpíada Brasileira de Informática 2009 BR Brazil

Timelimit: 1

Os computadores foram inventados para realizar cálculos muito rapidamente, e atendem a esse requisito de maneira extraordinária. Porém, nem toda conta pode ser feita num computador, pois ele não consegue representar todos os números dentro de sua memória. Em um computador pessoal atual, por exemplo, o maior inteiro que é possível representar em sua memória é 4.294.967.295. Caso alguma conta executada pelo computador dê um resultado acima desse número, ocorrerá o que chamamos de overflow, que é quando o computador faz uma conta e o resultado não pode ser representado, por ser maior do que o valor máximo permitido (em inglês overflow significa trasbordar).

Por exemplo, se um computador só pode representar números menores do que 1023 e mandamos ele executar a conta 1022 + 5, vai ocorrer overflow.

Dados o maior número que um computador consegue representar e uma expressão de soma ou multiplicação entre dois inteiros, determine se ocorrerá overflow.

 

Entrada

 

A entrada contém um único conjunto de testes, que deve ser lido do dispositivo de entrada padrão (normalmente o teclado).

A primeira linha da entrada contém um inteiro N (1 ≤ N ≤ 500.000) representando o maior número que o computador consegue representar. A segunda linha contém um inteiro P (0 ≤ P ≤ 1000), seguido de um espaço em branco, seguido de um caractere C (que pode ser ‘+’ ou ‘*’, representando os operadores de adição e multiplicação, respectivamente), seguido de um espaço em branco, seguido de um outro inteiro Q (0 ≤ Q ≤ 1000). Essa linha representa a expressão P + Q, se o caractere C for ‘+’, ou P × Q, se o caractere C for ‘*’.

 

Saída

 

Seu programa deve imprimir, na saída padrão, a palavra ‘OVERFLOW’ se o resultado da expressão causar um overflow, ou a palavra ‘OK’ caso contrário. Ambas as palavras devem ser escritas com letras maiúsculas.

 

 

 

Exemplos de Entrada Exemplos de Saída

10

5 + 5

OK

 

 

 

44

23 * 2

OVERFLOW

 

Code Examples

#1 Code Example with C Programming

Code - C Programming


#include <stdio.h>

int main (void)
{

	unsigned numMax;
	unsigned numA, numB;
	char operacao;

	scanf("%u", &numMax);
	scanf("%u %c %u", &numA, &operacao, &numB);

	if (operacao == '+')
		if (numA + numB > numMax)
			printf("OVERFLOW\n");
		else
			printf("OK\n");
	else
		if (numA * numB > numMax)
			printf("OVERFLOW\n");
		else
			printf("OK\n");


}
Copy The Code & Try With Live Editor

Input

x
+
cmd
10 5 + 5

#2 Code Example with C++ Programming

Code - C++ Programming


#include <cstdio>
int main() {
    int a, b, c;
    char digito;
    scanf("%d", &a);
    scanf("%d %c %d", &b, &digito, &c);
    if (digito == 43) {
        if (a >= (b + c)) {
            printf("OK\n");
        } else {
            printf("OVERFLOW\n");
        }
    } else {
        if (a >= (b * c)) {
            printf("OK\n");
        } else {
            printf("OVERFLOW\n");
        }
    }
    return 0;
}
Copy The Code & Try With Live Editor

#3 Code Example with Javascript Programming

Code - Javascript Programming


const { readFileSync } = require("fs")
const [N, expression] = readFileSync("/dev/stdin", "utf8").split("\n", 2)

console.log(Number.parseInt(N, 10) >= eval(expression) ? "OK" : "OVERFLOW")
Copy The Code & Try With Live Editor
Advertisements

Demonstration


Previous
#2341 Beecrowd Online Judge Solution 2341 Número de Envelopes Solution in C, C++, Java, Js and Python
Next
#2343 Beecrowd Online Judge Solution 2343 Caçadores de Mitos Solution in C, C++, Java, Js and Python