Informatics Olympiad
National Youth Informatics Olympiad Series Competition
C++Practical Simulation Problems
From Problem Description to AC Code
The core ability of award-winning participants in the Informatics Olympiad: Transforming problem descriptions into AC code within 10 minutes! This complete problem-solving guide for GESP Level 1 simulation problems will help you master the underlying thinking patterns of competitive programming.
Chapter 1,What are Simulation Problems?Why are they core to GESP Level 1?
Analysis of Simulation Problems
Simulation problems are one of the most common types of questions in the Informatics Olympiad, requiring participants to implement algorithms strictly according to the problem description. These problems do not involve complex algorithms but test the participants’:
-
Attention to Detail: Can you identify hidden conditions in the problem?
-
Code Implementation Ability: Can you accurately translate the textual description into code?
-
Boundary Handling Ability: Can you consider various extreme cases?
Characteristics of GESP Level 1 Simulation Problems

Chapter 2, Four-Step Problem Solving Method – A Standardized Process from Problem to AC
Step 1: Read the Problem Carefully (3 minutes) – Determine Input and Output Formats
Key Questions:
1. What input data is there? What is the format?
2. What are the output requirements? What is the format?
3. What is the data range? (This determines whether to use int or long long)
Practical Case:
Problem: Calculate the sum of two integers
Input: Two integers a and b (0 ≤ a, b ≤ 1000)
Output: An integer representing the result of a + b
Code Framework:
include <iostream
using namespace std;
int main() {
int a, b;
cin a b; // Read input
cout << a + b; // Process and output
return 0;
}
Step 2: Analyze and Design (2 minutes) – Design Processing Logic
Key Tasks:
1. Decompose the problem steps
2. Determine the variables and data structures needed
3. Design the processing flow
Practical Case:
Problem: Count the number of digit characters in a string
Input: A string s (length not exceeding 1000)
Output: The number of digit characters
Logical Analysis:

Step 3: Code Implementation (3 minutes) – Write and Test Code
Implementation Points:
Variable names should be meaningful
Add necessary comments
Pay attention to boundary cases
Complete Code:
include <iostream
include <string
using namespace std;
int main() {
string s;
getline(cin, s); // Read the entire line of string
int count = 0; // Initialize counter
for (char c : s) { // Iterate through each character
if (c = ‘0’ && c <= ‘9’) { // Check if it is a digit
count++; // Increment counter
}
}
cout << count; // Output result
return 0;
}
Step 4: Check and Debug (2 minutes) – Ensure AC Passes
Checklist:
Have all boundary cases been tested?
Does the output format meet the requirements?
Is the variable range sufficient?
Chapter 3: Detailed Explanation of GESP Level 1 Simulation Problem Types
Problem Type 1: Mathematical Calculation Simulation
Problem Description:
Little Ming’s school is holding a sports meeting and needs to buy n bottles of mineral water, each costing 2 yuan. If the quantity exceeds 50 bottles, the excess will be charged at 20% off. Please calculate the total cost.
Input: An integer n (1 ≤ n ≤ 1000)
Output: A real number representing the total cost (rounded to two decimal places)
AC Code:
include <iostream
include <iomanip
using namespace std;
int main() {
int n;
cin n;
double total;
if (n <= 50) {
total = n * 2.0;
} else {
total = 50 * 2.0 + (n – 50) * 2.0 * 0.8;
}
cout << fixed << setprecision(2) << total;
return 0;
}
Problem Type 2: String Processing Simulation
Problem Description:
Given a string, convert all lowercase letters to uppercase letters.
Input: A string s (length not exceeding 1000)
Output: The converted string
AC Code:
include <iostream
include <string
include <cctype
using namespace std;
int main() {
string s;
getline(cin, s);
for (char &c : s) { // Use reference to modify original character directly
if (islower(c)) {
c = toupper(c);
}
}
cout << s;
return 0;
}
Problem Type 3: Logical Judgment Simulation
Problem Description:
Determine whether a year is a leap year. The rules for leap years are: divisible by 4 but not by 100, or divisible by 400.
Input: An integer year (1900 ≤ year ≤ 3000)
Output: If it is a leap year, output “YES”, otherwise output “NO”
AC Code:
include <iostream
using namespace std;
int main() {
int year;
cin year;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
cout << “YES”;
} else {
cout << “NO”;
}
return 0;
}
Chapter 4: Common Traps in Simulation Problems and How to Avoid Them
Trap 1: Integer Overflow
Problem: Not paying attention to data range leads to overflow in calculation
// Incorrect Example
int a = 1000000;
int b = 1000000;
int c = a * b; // Overflow!
// Correct Approach
long long c = (long long)a * b;
Trap 2: Floating Point Precision
Problem: Directly comparing floating point numbers leads to errors
// Incorrect Example
double a = 0.1 + 0.2;
if (a == 0.3) // May be false
// Correct Approach
const double EPS = 1e-8;
if (fabs(a – 0.3) < EPS)
Trap 3: Missing Boundary Conditions
Problem: Ignoring boundary values leads to failure of some test cases
// Common Boundary Cases
– Empty strings, empty arrays
– Minimum/maximum input values
– Special handling of equal cases
Chapter 5: Competition Practical Skills
Time Allocation Strategy

Debugging Skills
1. Sample Testing: Use the samples provided in the problem for testing
2. Boundary Testing: Test minimum, maximum, and special values
3. Intermediate Output: Add output statements at key steps for debugging
Code Template
include <iostream
using namespace std;
int main() {
// 1. Read data
int n;
cin n;
// 2. Processing logic
// … Main code goes here
// 3. Output result
cout << result;
return 0;
}
Interactive Moment
Follow the public account and send a message“Informatics Olympiad Outline”
Automatically receive the electronic version of 【National Youth Informatics Olympiad Series Competition Outline (2025 Edition)】
Follow the public account and send a message“NOI Question Bank”
Automatically receive the electronic version of【NOI2025 Basic Knowledge Question Bank】
Informatics Olympiad | Algorithm Programming | Artificial Intelligence | Information Technology
Click to add WeChat to learn about the registration channel

>>> WeChat ID|lengmingxing