【题解】公式成绩
【题目描述】
学校的期中考试到了。
gp 老师一共收集到 n 个学生的成绩,每个学生有 5 科成绩,分别是语文、数学、英语、政治、历史。(ai,bi,ci,di,ei)
gp 老师突发奇想,他用 m 条公式来评价学生的成绩,也就是说,每条公式都单独评价一个指定的学生。
公式的形式为 Mark=kj1*ai+kj2*bi+kj3*ci+kj4*di+kj5*ei
现在 gp 老师懒得计算,他把这个任务交给了你,请你按照数据给出的 m 条公式,分别计算出 m 个指定的学生
对应的分数(mark)值。
【输入描述】
第 1 行为 n,m。
第 2~ n+1 行,每行有五个正整数 ai,bi,ci,di,ei,分别为五科成绩
第 n+2 ~n+1+m 行,每行有六个整数 ki1,ki2,ki3,ki4,ki5,pi,分别为公式的系数和第 pi 个学生
【输出描述】
一行 m 个数,分别为 m 条公式对应学生的分数值
【样例输入】
3 2 1 2 3 4 5 5 8 2 1 3 4 2 9 3 5 3 2 1 0 5 2 1 2 3 4 5 1
【样例输出】
48 55
【数据范围】
n<=1000 ai,bi,ci,di,ei<=1000 -1000<=ki<=1000 保证所有数据都是整数
【题目分析】
中等程度的模拟题,问题的难点在于没看懂输入样例
输入样例的第n+2到n+1+m行,最后一个数表示第pi个学生。
注意输出的时候每个数用空格隔开,如果你回车或者换行答案也是错的。
输入的时候也比较麻烦。但是比较好的一点就是锁定了5门成绩和5个公式系数
一个思路是都看成一维数组,然后用整数去取。另一个比较好的思路是看成二维数组,这个方法比较直观。
实际的处理结果要看m的次数。
【参考答案】
#include<iostream> using namespace std; int x[1005][1005],y[1005][1005],n,m; //分别表示成绩,系数,第n个人 int main(){ cin>>n>>m;//读入n和m for(int i=1;i<=n;i++) { for(int j=1;j<=5;j++)//锁定5列 cin>>x[i][j]; } for(int i=1; i<=m;i++) { for(int j=1; j<=6;j++) //锁定6列 cin>>y[i][j]; } //处理数据 for(int i=1;i<=m;i++) { int ans =0; int tmp = y[i][6]; //取末尾数表示第n个学生 for(int j=1;j<=5;j++) { ans+=x[tmp][j]*y[i][j]; } cout<<ans<<" "; } return 0; }
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。