PAT乙级1059C语言竞赛(20分)运行超时,求大佬解答
问题描述:
请问一下各位大佬,我做PAT乙级“1059C语言竞赛(20分)”那道题的时候,代码如下,实在搞不懂为什么测试点1和2会运行超时,请大佬指点,小菜鸟感激不尽????
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <math.h>
using namespace std;
bool isPrime(int c) {
for (int i = 2; i <= sqrt(c); i++) {
if (c % i == 0) return false;
}
return true;
}
int main() {
int N; cin >> N;
vector<string> vec(N), checked;
for (int i = 0; i < N; i++) cin >> vec[i];
int m; cin >> m;
string c;
int rank;
for (int i = 0; i < m; i++) {
cin >> c;
if (find(checked.begin(), checked.end(), c) != checked.end()) { cout << c << ": Checked" << endl; continue; }
rank = find(vec.begin(), vec.end(), c) - vec.begin();
if (rank == N) cout << c << ": Are you kidding?" << endl;
else if (rank == 0) { cout << c << ": Mystery Award" << endl; checked.push_back(c); }
else if (isPrime(rank+1)) { cout << c << ": Minion" << endl; checked.push_back(c); }
else { cout << c << ": Chocolate" << endl; checked.push_back(c); }
}
return 0;
}
答
能提供一下题目吗?获取题目链接也行。还有测试点1和测试点2超时的话,有没有输入的样例呢?
答
你在输入数据的前面加上std::ios::sync_with_stdio(false);
用这个语句,取消cin,cout与stdio的同步,说白了就是提速,效率基本与scanf和printf一致,然后就可放心的使用cin,cout了。
可以参考https://blog.csdn.net/qq_42145681/article/details/83176493?spm=1001.2014.3001.5502
答
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632