2025开始准备蓝桥杯,很多刷题笔记直接写在了代码的注释里,但是一个一个文件保存在电脑里太麻烦了,所以将所有我自己已经编译通过的代码放在这个文档里,也当是对自己学习成果的一个记录。
我的代码就是按照我自己的思路写的,非常简单也方便我自己理解。 如果能够帮助到和我一样没有什么天赋的朋友,当然是更加荣幸之至。
这是算法章节第一个——模拟与高精度。
主页有上一个章节题目的思路和源码。 从现在开始记录洛谷cpp刷题源码

模拟与高精度是什么?
我在学习的时候参考了以下博客:算法学习-模拟与高精度-优快云博客
同时用Deepseek总结了什么是模拟与高精度:
模拟算法,可能就是说按照问题的步骤一步步来,不涉及什么特别的技巧,直接模拟现实过程。比如,用户举的例子是计算阶乘,或者解决约瑟夫环问题。那模拟算法的关键就是按照题目描述,一步一步地实现,不需要复杂的数学公式或者优化。不过这样可能会比较耗时,尤其是数据量大的时候。
然后是高精度计算。这里可能指的是当数字超过普通数据类型(比如int或long long)的范围时,如何处理这些大数。例如,计算1000的阶乘,结果会非常大,普通的整数类型存不下,这时候需要用数组或者字符串来存储每一位数字,然后自己实现加减乘除的操作。比如,把数字倒序存储在数组里,每一位进行运算,处理进位问题。这样就能处理非常大的数字了。
模拟算法是一种解题思路,而高精度计算是一种具体的技术手段,两者可以结合使用。例如,在解决大数阶乘问题时,既需要模拟计算阶乘的步骤,又需要使用高精度技术来处理大数。

第一题:乒乓球

思路:
上面也已经学习了模拟算法是什么东西,所以就直接按照这道题给的情景来做就好了。
分析一下题目:有两种记分制度,其分别记分规则以及胜利条件如下:
11分制:
if(score>=11&&abs(a-b)>=2)
//即分数大于等于11分并且两边分差大于等于2
21分制:
if(score>=21&&abs(a-b)>=2)
所以题目的要求应该是分为两个步骤,分别判断一个由W、L、E组成的字符串在两种不同制度之下的比分。
代码:
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
void score_11(string& record)
{
//总比分
int A = 0, B = 0;
int a=0, b=0;
for (int i = 0; i < record.size(); i++)
{
int c = record[i];
if (c == 'W')
{
a += 1;
}
else if (c == 'L')
{
b += 1;
}
else if (c == 'E')
{
break;//如果c等于E直接跳出循环,E后面的所有都不计算
}
//来判断是否需要总比分变化
if ((a >= 11 || b >= 11)&&abs(a-b)>=2)
{
if (a >b) A += 1;
else if (b >a) B += 1;
cout << a << ":" << b << endl;
a = 0;
b = 0;
}
}
cout << a<< ":" << b << endl;
}
void score_21(string& record)
{
//这两个不一样的只有判断结束的比分不同
//总比分
int A = 0, B = 0;
int a = 0, b = 0;
for (int i = 0; i < record.size(); i++)
{
int c = record[i];
if (c == 'W')
{
a += 1;
}
else if (c == 'L')
{
b += 1;
}
else if (c == 'E')
{
break;//如果c等于E直接跳出循环,E后面的所有都不计算
}
//来判断是否需要总比分变化
if ((a >= 21 || b >= 21) && abs(a - b) >= 2)
{
if (a >b) A += 1;
else if (b >a) B += 1;
cout << a << ":" << b << endl;
a = 0;
b = 0;
}
}
cout << a << ":" << b << endl;
}
int main()
{
//尝试读取多行数据
string record;
string line;
// 逐行读取输入,直到遇到包含 'E' 的行
while (getline(cin, line)) {
record += line;
if (line.find('E') != string::npos) {
break;
}
}
score_11(record);
cout << endl;
score_21(record);
}

最低0.47元/天 解锁文章
512

被折叠的 条评论
为什么被折叠?



