PAT Basic 1061. 判断题

发布时间 2023-04-01 22:15:42作者: 十豆加日月

PAT Basic 1061. 判断题

1. 题目描述:

判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。

2. 输入格式:

输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表“是”。随后 N 行,每行给出一个学生的解答。数字间均以空格分隔。

3. 输出格式:

按照输入的顺序输出每个学生的得分,每个分数占一行。

4. 输入样例:

3 6
2 1 3 3 4 5
0 0 1 0 1 1
0 1 1 0 0 1
1 0 1 0 1 0
1 1 0 0 1 1

5. 输出样例:

13
11
12

6. 性能要求:

Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

思路:

除草题,按照题意编写即可。这里判断答案时一开始想到用异或再取非的操作,其实直接==判断即可。。。然后一开始定义了int型数组pTemp用于存储每个学生的各题答案,其实直接用一个int类型变量temp即可。。。考虑的复杂了,可能是刚玩完小小梦魇的原因。。。有点红温了

My Code:

#include <stdio.h>
#include <stdlib.h> // malloc header

int main(void)
{
    int stuCount = 0;
    int quesCount = 0;
    int *pGrade = NULL;
    int *pAnswer = NULL;
    int i=0; // iterator
//     int *pTemp = NULL;
    int res = 0; // result
    int j=0; // iterator
    int temp = 0;
    
    scanf("%d%d", &stuCount, &quesCount);
    pGrade = (int *)malloc(sizeof(int) * quesCount);
    pAnswer = (int *)malloc(sizeof(int) * quesCount);
//     pTemp = (int *)malloc(sizeof(int) * quesCount);
    
    for(i=0; i<quesCount; ++i)
    {
        scanf("%d", pGrade+i);
    }
    for(i=0; i<quesCount; ++i)
    {
        scanf("%d", pAnswer+i);
    }
    
    for(i=0; i<stuCount; ++i)
    {
        res = 0;
        for(j=0; j<quesCount; ++j)
        {
            scanf("%d", &temp);
//             scanf("%d", pTemp+j);
            //if(!(pTemp[j] ^ pAnswer[j])) // correct answer
            //if(pTemp[j] == pAnswer[j])
            if(temp == pAnswer[j])
            {
                res += pGrade[j];
            }
        }
        printf("%d\n", res);
    }
    
    
    free(pGrade);
    free(pAnswer);
//     free(pTemp);
    return 0;
}