PTA题解
早睡,程序员的自我修养
这个作者很懒,什么都没留下…
展开
-
PAT 1011 A+B 和 C (15 point(s))
PAT 1011 A+B 和 C (15 point(s)) 解题思路: int 的范围是[-231,231),所以单纯的int并不能真正的容纳[-231,231]之间的所有数,同样的long也不行,只能用long long,鉴于数据较大,用scanf读入。 #include <iostream> #include <cstdio> using namespace std; int main() { int n, R[10]{}; cin >> n; fo原创 2021-02-27 07:05:04 · 104 阅读 · 0 评论 -
PAT 1010 一元多项式求导 (25 point(s))
PAT 1010 一元多项式求导 (25 point(s)) 解题思路: 对于一元函数求导大家并不陌生,只需注意空格的位置和特殊项0 0。 #include <iostream> #include <vector> using namespace std; int main() { vector<int> v; int tem; while (cin >> tem) v.push_back(tem); if (!v.size() || v[1]原创 2021-02-27 06:38:40 · 145 阅读 · 0 评论 -
PAT 1009 说反话 (20 point(s))
PAT 1009 说反话 (20 point(s))原创 2021-02-26 12:04:26 · 160 阅读 · 0 评论 -
PAT 1008 数组元素循环右移问题 (20 point(s))
PAT 1008 数组元素循环右移问题 (20 point(s)) 解题思路: 程序移动次数尽量少,最好的方法就是不移动????。 #include <iostream> using namespace std; int main() { int n, m, arr[100], move, begin; cin >> n >> m; for (int i = 0; i < n; i++) cin >> arr[i]; move = m %原创 2021-02-03 10:51:24 · 81 阅读 · 0 评论 -
PAT 1007 素数对猜想 (20 point(s))
PAT 1007 素数对猜想 (20 point(s)) 解题思路: 先判断是不是素数,再看它与前一个素数相差是不是2。 #include <iostream> using namespace std; bool IsPrime(int x); int main() { int n, past = 3, count = 0; cin >> n; for (int i = 3; i <= n; i += 2) { if (IsPrime(i)) {原创 2021-02-03 10:23:24 · 89 阅读 · 0 评论 -
PAT 1006 换个格式输出整数 (15 point(s))
PAT 1006 换个格式输出整数 (15 point(s)) 解题思路: 无。 #include <iostream> using namespace std; int main() { int n, num[3] = { 0 }, count = 0; cin >> n; while (n != 0) { num[count] = n % 10; n /= 10; count++; } for (int i = 0; i < num[2]; i+原创 2021-02-03 10:02:59 · 76 阅读 · 0 评论 -
PAT 1005 继续(3n+1)猜想 (25 point(s))
PAT 1005 继续(3n+1)猜想 (25 point(s)) 解题思路: 对每个数字得到的答案都进行一次遍历数组,想法还很简单。 #include <iostream> using namespace std; int sort(int num[], int n); int main() { int n, num[100], count; cin >> n; for (int i = 0; i < n; i++) cin >> num[i]; f原创 2021-02-03 09:51:58 · 100 阅读 · 0 评论 -
PAT 1004 成绩排名 (20 point(s))
PAT 1004 成绩排名 (20 point(s)) 解题思路: 这道题是学生信息管理,因为要保存不同的数据类型,所以我采用了结构体数组来保存单个学生信息。 #include <iostream> using namespace std; struct Achievement { char name[11], num[11]; int ach = 0; }achievement[100]; void sort(int a); int main() { int n; cin原创 2021-02-02 20:12:20 · 114 阅读 · 0 评论 -
PAT 1003 我要通过! (20point(s))
PAT 1003 我要通过! (20point(s)) 解题思路: 这道题主要是进行字符串的检查,因为情况较为复杂,所以我进行了分类,分为开头是A和不是A以及其他字符三种情况,由题易知P和T中间一定有A且当满足第三种情况时,中间A的个数乘以前面A的个数等于后面A的个数,这是我们读题需要知道的。 #include <iostream> #include <string> using namespace std; int main() { int n, ans[10];原创 2021-02-02 19:09:48 · 144 阅读 · 0 评论 -
PAT 1002 写出这个数 (20point(s))
PAT 1002 写出这个数 (20point(s)) 解题思路: 对于这么大的数字当然不可能用%d去读入,应该是把他看成是一个字符串来处理,我们当然也不可能使用%s读入,太占空间,这个时候我们就可以一个字符一个字符处理,处理完就丢掉。 #include <iostream> using namespace std; int main() { char pinyin[10][10] { "ling" , "yi", "er", "san", "si", "wu", "liu", "qi"原创 2021-02-02 06:34:48 · 134 阅读 · 0 评论 -
1001 害死人不偿命的(3n+1)猜想 (15point(s))
PTA 1001 害死人不偿命的(3n+1)猜想 (15point(s)) 这道题主要是注意审题,对于奇数需要(3n+1)/2算作一步;可以省略一些无关判断,比如if,else条件处。 #include <iostream> using namespace std; int main() { int n, count = 0; cin >> n; while (n != 1) { if (n % 2) { n = (3 * n + 1) / 2; c原创 2021-01-17 23:09:31 · 104 阅读 · 0 评论