1002 A+B for Polynomials (25 分)

  • 题意 :给两个多项式,输出两个多项式相加结果的系数和次数
  • 思路 :用double数组记录多项式,正好数组下标是整数,系数是double
#include <iostream>using namespace std;const int N = 1010;double a[N], b[N], c[N];int main()
{int k;cin >> k;while (k -- ){int ex;double co;cin >> ex >> co;a[ex] = co;}cin >> k;while (k -- ){int ex;double co;cin >> ex >> co;b[ex] = co;}for (int i = 0; i < N; i ++ ) c[i] = a[i] + b[i];k = 0;for (int i = 0; i < N; i ++ )if (c[i])k ++ ;cout << k;for (int i = N - 1; i >= 0; i -- )if (c[i])printf(" %d %.1lf", i, c[i]);return 0;
}

1009 Product of Polynomials (25 分)

  • 题意 :给两个多项式,输出两个多项式相乘结果的系数和次数
  • 语法 :使用函数化解这个不同的容器相同操作的尴尬;正确认知数组实际应有的容量,尽量开大
#include <iostream>using namespace std;const int N = 1010, M = N * 2;double a[N], b[N], c[M];void input(double a[])
{int k;cin >> k;while (k -- ){int n;double v;cin >> n >> v;a[n] = v;}
}int main()
{input(a);input(b);for (int i = 0; i < N; i ++ )for (int j = 0; j < N; j ++ )c[i + j] += a[i] * b[j];int k = 0;for (int i = 0; i < M; i ++ )if (c[i])k ++ ;cout << k;for (int i = M - 1; i >= 0; i -- )if (c[i])printf(" %d %.1lf", i, c[i]);return 0;
}

1023 Have Fun with Numbers (20 分)

  • 题意 :将n乘以二后得到的数的每一位数字是否和n中个数一样
  • 思路 :高精度加法(整数) 就是在int和long long都存不下来时用;个位存在a[0]的位置(倒着放);如何判断两个vector数组中无关顺序的情况下所存数一样呢 ?排序后直接比较。
  • 语法 :vector之间 支持比较运算,可以按照字典序判断两个序列大小关系;sort函数在algorithm头文件中。
#include <iostream>
#include <vector>
#include <algorithm>using namespace std;int main()
{string A;vector<int> a;cin >> A;for (int i = A.size() - 1; i >= 0; i -- ) a.push_back(A[i] - '0');vector<int> b;int t = 0;for (int i = 0; i < a.size(); i ++ ){int s = a[i] + a[i] + t;b.push_back(s % 10);t = s / 10;}if (t) b.push_back(1);vector<int> c = b;sort(c.begin(), c.end());sort(a.begin(), a.end());if (a == c) puts("Yes");else puts("No");for (int i = b.size() - 1; i >= 0; i -- ) cout << b[i];return 0;
}

1024 Palindromic Number (25 分)

题意 :

  • 给一数n,每次操作将它与逆序后的数相加,问它能否在k步内变成回文数,如果不能,则输出第k次后的数和k

思路 :

  • 用vector存,且逆序存,这样就可以进位了
  • 相加的时候是从0开始遍历的,且三个限制中有一个还符合条件就可以继续计算
  • 记得输出也要逆序输出

思路 :

  • vector的逆序存,vector<int> b(a.rbegin(), a.rend());
#include <iostream>
#include <vector>
using namespace std;bool check(vector<int>& n)
{for (int i = 0, j = n.size() - 1; i < j; i ++ , j -- )if (n[i] != n[j])return false;return true;
}vector<int> add(vector<int>& a, vector<int>& b)
{vector<int> c;for (int i = 0, t = 0; i < a.size() || i < b.size() || t; i ++ ){int s = t;if (i < a.size()) s += a[i];if (i < b.size()) s += b[i];c.push_back(s % 10);t = s / 10;}return c;
}int main()
{string n;int k;cin >> n >> k;vector<int> a;for (int i = n.size() - 1; i >= 0; i -- ) a.push_back(n[i] - '0');int cnt = 0;if (!check(a)){while (cnt < k){vector<int> b(a.rbegin(), a.rend());a = add(a, b);cnt ++ ;if (check(a)) break;}}for (int i = a.size() - 1; i >= 0; i -- ) cout << a[i];cout << endl << cnt << endl;
}

1058 A+B in Hogwarts (20 分)

  • 题意 :A和B分别用转换后的形式给出,求转换后形式的A+B,题目保证所给的是化简后的转换后形式
  • 思路 :实则就是进位制的操作,不用if特判
  • 语法 :scanf和printf的妙用
#include <iostream>using namespace std;int main()
{int a, b, c, d, e, f;scanf("%d.%d.%d %d.%d.%d", &a, &b, &c, &d, &e, &f);a += d, b += e, c += f;b += c / 29, c %= 29;a += b / 17, b %= 17;printf("%d.%d.%d", a, b, c);return 0;
}

1136 A Delayed Palindrome (20 分)

  • 题意 :输入一数,循环将其与逆序相加得到一新数,直到新数为回文串
  • 思路 :注意每次循环里面是先check再进行后续操作(包括等式)的,否则会wa,想象比如输入的就是回文数的情况;且第十次出去的如果是的话,也是回文数要输出;一般先放最低位到vector中;高精度加法的写法;函数化程序
  • 语法 :将一个vector逆序复制给另一个vector;从string转换到vector的时候记得-‘0’
#include <iostream>
#include <vector>using namespace std;bool check(vector<int> A)
{for (int i = 0, j = A.size() - 1; i < j; i ++ , j -- )if (A[i] != A[j])return false;return true;
}void print(vector<int> A)
{for (int i = A.size() - 1; i >= 0; i -- )cout << A[i];
}vector<int> add(vector<int> A, vector<int> B)
{vector<int> C;for (int i = 0, t = 0; i < A.size() || i < B.size() || t; i ++ ){if (i < A.size()) t += A[i];if (i < B.size()) t += B[i];C.push_back(t % 10);t /= 10;}return C;
}int main()
{string a;cin >> a;vector<int> A;for (int i = 0; i < a.size(); i ++ ) A.push_back(a[a.size() - 1 - i] - '0');for (int i = 0; i < 10; i ++ ){if (check(A)) break;vector<int> B(A.rbegin(), A.rend());print(A), cout << " + ", print(B), cout << " = ";A = add(A, B);print(A), cout << endl;}if (check(A)) print(A), cout << " is a palindromic number.";else cout << "Not found in 10 iterations.";return 0;
}

PAT甲级题目翻译+答案 AcWing(高精度)相关推荐

  1. PAT甲级题目翻译+答案 AcWing(数学)

    1059 Prime Factors (25 分) 题意 : 给一正整数,要求分解质因数 思路 : 使用is_first,来完成除了第一个质因数前都有*的效果 如果n=1,要特判 最后如果n>1 ...

  2. PAT甲级题目翻译+答案 AcWing(排序)

    1012 The Best Rank (25 分) 题意 :给ID和3门成绩,计算其平均分A,输出每位学生最好的排名,A>C>M>E 思路 :如果将所需的若干个元素中使第一个元素为后 ...

  3. PAT甲级题目翻译+答案 AcWing(模拟)

    1008 Elevator (20 分) 思路 :last可能等于cur,而无论是否相等,res都是+5的 #include <iostream>using namespace std;i ...

  4. PAT甲级题目翻译+答案 AcWing(动态规划)

    1007 Maximum Subsequence Sum (25 分) 题意 :注意最后输出的不是索引而是在那个索引的数 思路 :f为当前的假设开始指针,每一次累加到sum,如果sum大于res,就更 ...

  5. PAT甲级题目翻译+答案 AcWing(图论)

    1003 Emergency (25 分) 题意 :求无向图中最短路的数量,以及在最短路情况下,点权之和最大是多少 思路 :dijkstra的扩展一般在第三步"用t更新其它点":s ...

  6. PAT甲级题目翻译+答案 AcWing(进位制)

    1010 Radix (25 分) 题意 :radix进制 题意 :给两个数和其中一个数的进制,问另一个数能否在某一进制下与这数相等 思路 :如果tag等于2就交换,最后还是只需要处理tag为1这种情 ...

  7. PAT甲级题目翻译+答案 AcWing(字符串处理)

    1001 A+B Format (20 分) 题意 :将整数转换成标准格式 思路 :从后往前遍历字符串进行模拟,每三个数字加一个逗号,但不能是在最前面加逗号,也不能是加在负号后面 #include & ...

  8. PAT甲级题目翻译+答案 AcWing(链表)

    1032 Sharing (25 分) 题意 : suffix后缀:prefix前缀 每个结点存一个字母,一共存两个单词 分别给两个单词的第一个字母的地址以及总共的结点数 给出所有结点的地址数值和下一 ...

  9. PAT甲级题目翻译+答案 AcWing(树)

    1004 Counting Leaves (30 分) 题意 : 家庭关系可以用家谱树来表示,给定一个家谱树,你的任务是找出其中没有孩子的成员. 第一行包含一个整数 N 表示树中结点总数以及一个整数 ...

最新文章

  1. 【HZOI2015】帕秋莉的超级多项式
  2. iOS安全之class-dump的安装和使用
  3. ubuntu 12.04 桌面版关闭图形界面
  4. ADO winform注册
  5. c语言最佳适应算法实验报告,操作系统实验报告---主存分配与回收(最佳适应算法)...
  6. Visual Studio .Net团队开发[转]
  7. centos 6.5 安装 lamp 后mysql不能启动_CentOS 6.5 系统 LAMP(Apache+MySQL+PHP)安装步骤
  8. OpenGL学习笔记:第一个OpenGL程序完全注释
  9. windows无法打开所需的文件C:\Sources\install.wim。
  10. HDU2077 汉诺塔IV【递推+打表】
  11. Android数据加密解密
  12. 笔记本显示器仅计算机,笔记本可以当屏幕用 笔记本屏幕当显示器用
  13. 密码1-分类,常用类型,密码分析
  14. 美国阿肯色州闪电彩虹共享一片天空(组图)
  15. 互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(二十二)...
  16. 开放存取知识库及其数据采集规范的研究
  17. 我如何构建heimdall开源个人电子邮件监护人
  18. 漫步线性代数八——向量空间和子空间
  19. Unity鼠标拖动物体、按下鼠标左键旋转观察物体、鼠标滚轮缩放视野
  20. Linux 命令缩写及参数

热门文章

  1. SAP SD:SAP信贷出口
  2. 给用户增加SAP_ALL权限
  3. 计算机二级C语言辅导j机构,全国计算机二级C语言公基础知识辅导.pptx
  4. 百度搜索打不开第二页_如何查询百度关键词精准收录位置以及收录量(附代码)...
  5. 快速排序算法_基于位运算的快速排序算法
  6. 关于mysql的一些问题_关于mysql的一些细节问题
  7. java迷宫生成代码_通过深度优先搜索产生的迷宫的Java代码
  8. 使用qtcreator中的git_Git中submodule的使用
  9. java递归深度克隆_递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝。...
  10. ubuntu安装mysql远程_Ubuntu18.04下远程安装MySQL