题干:1152 Google Recruitment (20 分)
题解:满分解答,代码里面有一点需要注意的东西
- 像这类的20分的题目大量的考察到了字符串的使用,其实题目重点考察的是作为STL的string,并不是以char组成的字符数组,强烈推荐使用前者,如果你习惯使用后者,也尽量改成前者来显著提高解题的效率,用string的话能够让你把更多的精力放在业务逻辑的编码上。。。。20分这道题的业务逻辑,和string的具体的几种常见的用法需要大量做题里面去总结,强化训练的话,最好去刷一下乙级的题库的。。。这个步骤最好放在做真题之前
- 其实PAT的命题是逐渐趋于稳定的,虽然CSDN上面能够搜索到不少题库里面未公开的题目,比如2019年,2020年的真题,但是用现有的这些题库反复的练熟已经差不多了,可以考虑在比较熟练的时候,拿2019年的,2020年的题目来当做模拟题训练。。。。其实主要原因是公开的题目可以反复的去提交代码,未公开的不方便
- 很多博主会推荐算法书,比如《算法笔记》。。。还有一些博主的经验和题解的收费PDF文档,比如柳神的,我的观点是,适合入门的时候看,我从开始接触算法竞赛相关的知识,到今天非常集中精力去备考PAT的话起码经过了一年以上的时间,如果有柳神的那一份经验,我这一年多会少走的很多弯路,从应试的角度上来说我会得到非常大的优势,《算法笔记》的话,在今天CSDN上面的题解和题目分类归纳这么丰富的情况下,意义不是很大。。。但是有的时候我也会觉得走弯路也是人生的一种经历吧,因为你并不是为一张考试,一张证书而生的,你有自己的目标和生活方式。。。而且如果你真的愿意去探索的话,你最后总结出来的经验会和大神们差不多的,那种感觉也许会比你直接看他们的经验更好,更美妙。。。总的一句话就是放平自己的心态,互联网让我们今天能够接触很多的大神,不要被哪些遥不可及的感觉给打倒,在一天天慢慢提升的过程中,不仅仅提高的是你自己的技术,更宝贵的是人生的阅历和思考。。。这是我个人最深的感受
- 柳神的PAT学习路径刷题经验.zip【关注我就能在CSDN上下载,免积分】
- 如果你现在的水平和我当初一样,你学过了一轮程序设计的基础知识,和数据结构与算法,你自己有独立开发过或者和导师同学合作过一些小项目,但是没有经过专门的算法训练。你如果要达到考试的要求的水准,就是在30分钟内完成这样的20分题是比较困难的,或者换句话说,可能要花掉数个月的时间。。。当然我这里不是说纯粹准备的,因为大学平常要上别的课程,要打游戏XD,还有其他的各种事情,学习算法的过程是一个时断时续的,这个是很正常的。。。如果碰到寒假和暑假这样就更好了。。。我平常也花了很多时间去看美剧,刷B站上面的视频,放松自己,这个很重要,因为在不熟练的时候,往往写完一道算法题,或者只是阅读他人的优秀答案,都是十分吃力的,会很消耗精力,熟练的话也很费劲
- 不是所有人的基础都是一样的,有的人高中的时候有学过竞赛,但是没有拿奖,有的人拿了奖,有的人是大学开始的,有的人大学之前有接触过计算机,有的人是做项目和应用为主,也有的人是ACM校队。。。。所以认清自己的起点,知道自己的目标,这个非常重要,或者换句话说调整自己的心态很重要,每年考PAT证都有不少弃考的。。。
-
// A1152.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <bits/stdc++.h> using namespace std; #pragma warning(disable:4996) bool is_prime(int n) { int i; int max = sqrt(n); for (i = 2; i <= max; i++) { if (n % i == 0) { return false; } } return true; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif // !ONLINE_JUDGE int n, k; cin >> n >> k; string x; cin >> x; bool flag = false; for (int i = 0; i <= n-1; i++) { int z = i + k - 1; if (z >= n) { break; } string t=""; for (int j = i; j <= z; j++) { t += x[j]; } if (is_prime(stoi(t))) { flag = true; x = t; break; } } if (flag) { cout << x; } else { cout << "404"; } }