罚时计算 PTA C++

题目:

ICPC/CCPC系列比赛排名规则:
1. 题目数量,这个好理解,数量越多越靠前。
2. "罚时"。题目相同时,罚时越少越靠前。
每道题的罚时由基准罚时和附加罚时两部分的和构成。每道题通过时,该题的基准罚时为当前时间减去开始时间的差值,如果这道题之前有提交不正确的,每提交不通过一次,多增加20分钟附加罚时。如果题目一直未通过,之前提交错误的不计入罚时。如果题目已经通过,则之后的提交无论正确与否都不计入罚时。

现在给定一系列提交数据,请你计算罚时

### 输入格式:
给一个数N,表示N次提交。(0<=N<= 100000)
接下来N行,每行用空格隔开的3个数a b c

a数字,表示题号(0<=a <= 1000000);

b是0或1,表示当前题目在本次提交是否通过,1表示通过;

c表示当前提交的时间(即与比赛开始时间的差异),单位为分钟。(0

### 输出格式:

一行,表示总的罚时。

### 输入样例:

3
1 1 10
2 1 20
3 1 30


7
1 0 10
1 1 15
2 0 20
3 1 30
2 0 50
2 1 100
2 0 200


### 输出样例:

60


205

#include <iostream>
#include <vector>

int main() {
	FILE* stream;
	freopen_s(&stream, "std.in", "r", stdin);
	int sum;
	std::cin >> sum;
	std::vector<int> myVector(3*sum), finalVector;
	int max = 0;
	for(int i = 0; i<sum; i++) {
		std::
### PTA C++ 实现 学生平均分计算 类 示例代码 解题思路 #### 题目分析 根据引用描述,目标是设计个程序来解决学生平均分的计算问题。具体来说,需要过滤掉不符合条件的输入数据并仅基于合法数据进行平均值计算。 合法数据的标准如下: - 数据应在 [-1000, 1000] 范围内。 - 小数部分不得超过两位有效数字。 以下是具体的解题方法和示例代码: --- #### 解决方案 为了完成此任务,可以按照以下逻辑编写代码: 1. **读取输入**:通过标准输入获取组实数。 2. **验证合法性**:逐检查每个数值是否满足合法性的定义。 3. **计算平均值**:累加所有合法数值,并除以合法数值的数量得出最终结果。 4. **输出结果**:如果没有任何合法数值,则应输出特殊提示(如 `Undefined` 或其他约定形式)。 --- #### 示例代码 ```cpp #include <iostream> #include <vector> #include <cmath> using namespace std; // 判断是否为合法数值 bool isValid(double num) { if (num < -1000 || num > 1000) return false; double intPart; double fractional = fabs(modf(num, &intPart)); return fractional * 100 <= 1e-6 || fractional * 100 >= 99.99; // 精确到小数点后两位 } int main() { vector<double> numbers; double input; cout << "请输入系列实数(按Ctrl+D结束输入):" << endl; while (cin >> input) { // 循环接收输入直到EOF numbers.push_back(input); } double sum = 0; int count = 0; for (double num : numbers) { if (isValid(num)) { // 如果当前数值合法 sum += num; ++count; } } if (count == 0) { cout << "No valid data to calculate average." << endl; } else { printf("%.2lf\n", sum / count); // 输出保留两位小数的结果 } return 0; } ``` --- #### 关键点说明 1. **合法性判断函数** 使用 `modf()` 函数分离整数部分和小数部分[^1]。对于小数部分,确保其精度不超过两位有效数字。 2. **边界情况处理** 当没有合法数据,需特别处理输出内容,避免出现错误或异常行为。 3. **浮点数比较注意事项** 浮点运算可能存在误差,因此在比较小数部分引入了个极小量阈值 \(1 \times 10^{-6}\) 来规避潜在问题。 --- ####
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值