PAT乙级1073 多选题常见计分法 (20 分)(这道题太恶心了,恶心啊)

本文解析了一道复杂的C++编程竞赛题目,涉及结构体、映射和文件输入输出等技术。通过具体示例展示了如何读取并处理复杂的数据结构,实现评分逻辑,并找出最常见的错误选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://pintia.cn/problem-sets/994805260223102976/problems/994805263624683520

全是坑 题干太长了

#include <iostream>
#include <map>
using namespace std;
struct test {
	double maxscore = 0.0, halfscore = 0.0;
	int answer = 0, cnt_choice = 0, correct = 0, cnt = 0, err[300] = { 0 };
};
int main() {
	map<char, int> match;
	match['a'] = 1; match['b'] = 2; match['c'] = 4; match['d'] = 8; match['e'] = 16;
	int N, M, a = 1, b = 2, c = 4, d = 8, e = 16;
	cin >> N >> M;
	test exam[105];
	for (int i = 0; i < M; i++) {
		char c;
		cin >> exam[i].maxscore >> exam[i].cnt_choice >> exam[i].correct;
		for (int j = 0; j < exam[i].correct; j++) {
			cin >> c;
			exam[i].answer += match[c];
		}
		exam[i].halfscore = exam[i].maxscore / 2;
	}
	for (int i = 0; i < N; i++) {
		double s = 0.0;
		for (int j = 0; j < M; j++) {
			int tmp, tmpans = 0, flag = 0;
			char c;
			c = getchar();
			while (c != '(')
				c = getchar();
			cin >> tmp;
			for(int k = 0; k < tmp; k++){
				cin >> c;
				tmpans += match[c];
			}
			int num = tmpans ^ exam[j].answer;
			if(num){
				exam[j].cnt++;
				if((num & exam[j].answer) == num)
					s += exam[j].halfscore;
				for(int k = 0; k < 5; k++){
					char ccc = k + 'a';
					int cc = num & match[ccc];
					if(cc == match[ccc])
						exam[j].err[k+'a']++;
				}
			}else
				s += exam[j].maxscore;
		}
		printf("%.1f\n", s);
	}
	int max = 0;
	for(int i = 0; i < M; i++){
		for(int j = 0; j < 5; j++){
			if(exam[i].err['a'+j] > max)
				max = exam[i].err['a'+j];
		}
	}
	if(!max)	cout << "Too simple";
	else{
		for(int i = 0; i < M; i++){
			for(int j = 0; j < 5; j++){
				if(max == exam[i].err['a'+j])
					printf("%d %d-%c\n", max, i+1, 'a'+j);
			}
		}
	}
	return 0;
}
<think>好的,我现在需要处理用户关于寻找PAT乙级目解答的请求。首先,用户希望得到详细的解答与解析,并且希望回答具有实用性和可操作性。根据任务要求,我需要调用网络搜索工具来获取相关信息,然后整合这些信息生成结构清晰的回答。 首先,我应该确认PAT乙级考试的相关信息,比如它是什么,考察内容等。然后,针对用户的问,寻找常见的解答途径。可能包括官方资源、在线评测平台、技术社区和书籍资料等。需要确保每个方都有具体的例子或链接,方便用户操作。 接下来,我需要考虑如何组织这些信息。用户要求多个方或步骤,每个步骤间换行,避免使用步骤词汇,所以可能需要用标式的点,比如“官方资源”、“在线评测平台”等作为每个部的小标。 然后,检查是否需要代码或公式。目解答中可能会有代码示例,所以需要按照格式要求,用三个反引号包裹代码,并注明语言类型。例如,在举例目1001时,应该提供一个Python代码示例,并正确格式化。 另外,回答中不能将引用集中在末尾,所以每个引用可能需要自然地嵌入到各个部中。例如,提到牛客网时直接说明其特点,并可能提到具体的目链接,但根据实际搜索结果,可能无提供具体链接,所以需要笼统描述。 还要注意避免使用第一人称,所以用客观陈述的方式介绍各个资源和方。例如,“PAT官网提供历年真”而不是“我建议访问PAT官网”。 生成相关问时,需要基于用户的原问和回答内容。可能的后续问包括如何备考、常见错误、目难度析等,确保每个问都与PAT乙级解答相关,并且能帮助用户进一步获取信息。 最后,检查格式是否符合要求,特别是数学公式和代码部,确保没有遗漏。同时,确保相关问使用正确的标,并且每个问用数字标号,没有多余的空格或换行。</think>根据PAT乙级的解答需求,整合以下解思路和资源渠供参考: **官方资源与OJ平台** 浙江大学PAT官网(https://pat.zju.edu.cn/)提供历年真库及在线评测功能。部目配备标准答案代码,适合基础训练与提交验证。例如目1001(害死人不偿命的3n+1猜想)的Python实现: ```python n = int(input()) count = 0 while n != 1: n = n // 2 if n % 2 == 0 else (3*n + 1)//2 count +=1 print(count) ``` **技术社区解析** 优快云、博客园等平台包含大量真解析笔记,用户"柳婼"的解系列(如《算笔记》配套解)提供C++/Java/Python多语言实现。典型解步骤包含: - 输入数据处理(如使用`map(int, input().split())`) - 核心算实现(如素数判断函数`is_prime`) - 输出格式控制(`print(f"{x:.1f}")`) **数据结构应用实例** 常见考点涉及哈希表应用,如1042字符统计: ```python from collections import defaultdict s = input().lower() d = defaultdict(int) for c in s: if c.isalpha(): d[c] +=1 max_c = max(d, key=lambda x: (-d[x],x)) print(max_c, d[max_c]) ``` **数学公式推导** 部目涉及数论知识,如1007素数对猜想需验证$p$和$p+2$同为素数的情况: $$ \exists p \in \mathbb{P},\ p+2 \in \mathbb{P} $$ 通过埃拉托斯特尼筛可优化计算效率,时间复杂度控制在$O(n\log\log n)$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值