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; }
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