其他分享
首页 > 其他分享> > 1059 C语言竞赛 (20 point(s))

1059 C语言竞赛 (20 point(s))

作者:互联网

// 10
#include <bits/stdc++.h>
using namespace std;

struct Stu{
	int rank, existed;
};

bool prime(int p){
	for(int i = 2; i <= sqrt(p); i++)
		if(p % i == 0) return false;
		
	return true;
} 

int main() {
	int n, k;
	map<string, Stu> stu;
	
	cin >> n;
	for(int i = 1; i <= n; i++){
		string tmp; 
		cin >> tmp;
		// 初始化查询标记 false 
		stu[tmp] = {i, false};
	}
	
	cin >> k;
	while(k--){
		string tmp;
		cin >> tmp;
		
		// 找ID 是否存在
		// 不存在情况
		if(stu.find(tmp) == stu.end()) cout << tmp  << ": Are you kidding?" << endl;
		// 存在是否已查
		else if(stu[tmp].existed == true) cout << tmp << ": Checked" << endl;
		else{
			if(stu[tmp].rank == 1) cout << tmp << ": Mystery Award" << endl;
			else if(prime(stu[tmp].rank)) cout << tmp << ": Minion" << endl;
			else cout << tmp << ": Chocolate" << endl;
			
			// 标记已经领取
			stu[tmp].existed = true; 
		}
	}
}

Float Point Exception 刚才获得了这个评测错误,一查才知道叫做浮点数错误。当时还在想,好像主程序里面没有任何有关除法的运算吧。一看别人的说明,原来求余也会导致这个错误,而求余也就在素数的判断中会存在了。因为不小心把因数的范围从 0 开始了,但是判断实际上应该从 2 开始。

Floating point exception


这题刚开始没有说排名的顺序到底是从 0 开始,还是从1 开始,试了试才知道是从 1 开始。


之前有几题不会写容器的引用传递,虽然现在会了,就是跟基本数据类型一样在参数定义的时候加一个 & 即可。

看了下别人的代码,除了传递引用之外,也可以把容器定义成全局的,这样就可以在直接在函数里面调用,而不必担心不会写引用传递了。(如果担心容器爆了栈内存的话,也可以放在全局)

参考代码

标签:tmp,容器,20,point,int,1059,cin,stu
来源: https://www.cnblogs.com/Atl212/p/15232177.html