列表

详情


NC14405. 齐齐录成绩

描述

齐齐给教务处录入成绩,但是一时糊涂,将部分成绩录错了,现在齐齐要查出错误。
已知登入成绩的m个学生有n科成绩,每科成绩的分值上限是100分。
现在已知错误的种类有以下3种:
1)    单科分数过大(>100),或过小(<0)。
2)    n科成绩的平均分与录入平均分不相等。
3)    n科成绩总和与录入成绩总和不相等。
请你输出m个学生中成绩有问题的学生个数。

输入描述

第1行输入两个整数m、n,表示学生的个数和科目的个数。
第2-m+1行,每行输入n+2个整数,前n个整数代表第i个学生的各科目成绩,第n+1个整数代表第i个学生的平均分(向下取整),第n+2个整数代表第i个学生的总分。
数据保证:0<m≤105,0<n≤10。

输出描述

输出一个整数,代表成绩有问题的学生个数。

示例1

输入:

2 3
99 99 99 99 297
99 99 98 99 296

输出:

1

说明:

第2个学生的平均分应该是98(向下取整),错误学生个数=1。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 296ms, 内存消耗: 3960K, 提交时间: 2020-03-25 22:03:28

#include<iostream>
using namespace std;
int main()
{
	int i,m,n,s[12],ans=0,mark=0;
	cin>>m>>n;
	while(m--)
	{
		int sum=0;
		for(i=0;i<n+2;i++)
		{
			cin>>s[i];
			if(i<n) sum+=s[i];
		 } 
		 if((i<n&&(s[i]>100||s[i]<0))||s[i-1]!=sum||s[i-2]!=sum/n) ans++;
	}
	cout<<ans;
	return 0;
}

Python3 解法, 执行用时: 556ms, 内存消耗: 4644K, 提交时间: 2022-02-14 10:46:47

m, n = map(int, input().split())
ans = 0
for _ in range(m):
    inp = list(map(int, input().split()))
    scores = inp[:n]
    avg = inp[-2]
    add = inp[-1]
    if int(sum(scores)/len(scores)) != avg or sum(scores) != add:
        ans += 1
print(ans)

上一题