📜  如何在竞争性编程中使用int和long long long int?

📅  最后修改于: 2021-06-25 22:11:44             🧑  作者: Mango

在大多数情况下,竞争性编程问题中的输入约束大于int的限制。因此,需要使用long int或什至long long int。在这里,让我们采取两种情况,以便如果天真的用户编写正确的逻辑仍然无法接受输入,则可以知道需要在何处进行纠正。

情况1:大整数输入而没有将long重新定义为long long int

情况2:使用重定义int作为long long int的大整数输入

情况1:大整数输入而没有将long重新定义为long long int

例子:

C++
// C++ program to demonstrate Overflow in Implicit Conversion itself
  
// Importing input output libaries
#include 
  
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 retun type of main was integer type
    return 0;
}


C++
// C++ program to demonstrate longlongint approach
  
// Including all basic libraries
#include 
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;
}


输出:

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

输出说明

这是因为整数数据类型可以容纳的数字范围是4个字节,这意味着它可以容纳从-2,147,483,647到2,147,483,647的整数。在本例中,输出超出了变量可以容纳的最大整数,因此请发出隐式常量转换的警告。因此,我们必须使用长数据类型,因为它可以容纳8个字节。为了更正此错误我们需要重新定义int。但是,由于main的数据类型也发生变化,程序仍将引发错误。因此将它们定义为int,以便我们可以加快比赛速度。 (即) #define int long long int

情况2:使用重定义int作为long long int的大整数输入

例子:

C++

// C++ program to demonstrate longlongint approach
  
// Including all basic libraries
#include 
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

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。