¿Cómo usar int como long long int para la programación competitiva?

La mayoría de las veces, las restricciones de entrada en las preguntas de programación competitiva son mayores que los límites de int. Por lo tanto, es necesario usar long int o incluso long long int. Aquí, tomemos dos casos para que si un usuario ingenuo escribe la lógica correcta y aún así la entrada no se acepta, pueda saber dónde se requiere la rectificación.

Caso 1: Entrada de entero grande sin redefinir int como long long int
Caso 2: Entrada de entero grande con redefinición de int como long long int

Caso 1: entrada de entero grande sin redefinir int como long long int

Ejemplo: 

C++

// C++ program to demonstrate Overflow in Implicit Conversion itself
 
// Importing input output libraries
#include <iostream>
 
using namespace std;
 
// Main driver method
int main()
{
    // 10 raised to the power of 10
    int x = 1e10;
 
    // Printing the number
    cout << x << endl;
 
    // As return type of main was integer type
    return 0;
}

Producción: 

prog.cpp: In function ‘int main()’:
prog.cpp:5:10: warning: overflow in implicit constant conversion [-overflow]
 int x = 1e10; 
         ^

Explicación de salida :

Esto se debe a que el rango de números que puede contener el tipo de datos enteros es de 4 bytes, lo que significa que puede contener números enteros que van desde -2,147,483,647 a 2,147,483,647. Aquí, en nuestro caso, la salida excede el número entero máximo que una variable puede contener, por lo tanto, arroje una advertencia de conversión constante implícita. Entonces, tenemos que usar un tipo de datos largo, ya que puede contener 8 bytes. Para rectificar lo mismo, necesitamos redefinir int. Sin embargo, el programa aún arrojará un error ya que el tipo de datos del principal también cambia. Entonces definiéndolos a int para que nuestra velocidad en los concursos pueda aumentar. (es decir) #define int long long int .

Caso 2: entrada de entero grande con redefinición de int como long long int 

Ejemplo:

C++

// C++ program to demonstrate longlongint approach
 
// Including all basic libraries
#include <bits/stdc++.h>
using namespace std;
 
// Main driver method with int32_t return type
int32_t main()
{
    // Calculating size of Integer data type
    // using sizeof() method
    cout << "size of int = " << sizeof(int) << '\n';
 
// Defining int as long long int
#define int long long int
 
    // Calculating new size of Integer data type
    // again using standard sizeof() method
    cout << "new size of int = " << sizeof(int) << '\n';
 
    // Big custom input integer
    int x = 1e18;
 
    // Print and display this big integer value
    cout << "value of x = " << x << endl;
 
    return 0;
}
Producción

size of int = 4
new size of int = 8
value of x = 1000000000000000000

Nota: Esto se usa generalmente en problemas de programación competitivos, ya que aceptará todos los tamaños de entrada.

Publicación traducida automáticamente

Artículo escrito por varunkedia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *