PAT甲级题解目录https://blog.csdn.net/liuchuo/article/details/52497386
1001 | A+B Format (20) | 查看题解 |
字符串处理 |
分成两步:要求计算A+B,然后以每三位一个逗号的格式输出。
1.计算A+B
用cin输入然后计算A+B
2.格式输出
使用to_string() 将A+B的结果转换成 string,然后对string 进行操作。//用到string库
难点是:每三位加一个逗号,是从前往后打印的(而正常是从后往前加逗号的)
只要当前位的下标i满足(i + 1) % 3 == len % 3并且i不是最后一位,就在逐位输出的时候在该位输出后的后面加上一个逗号
还有当第一位是 - 时,不能输出 , 。使用continue跳过。
#include<iostream> #include<string> using namespace std; int main() { int a,b; cin>>a>>b; string s = to_string(a+b); int len = s.length(); for(int i=0 ;i<len ;i++) { if(s[i] =='-') continue; if((i+1)%3 == len%3 && i != len-1 ) cout<<','; } return 0; }
1002 | A+B for Polynomials (25) | 查看题解 |
模拟 |
A+B ,A和B是多项式(Polynomials)
首先要看懂题目,
题目要求 2个多项式A+B的和
输入:
两行,每行包含一个多项式的信息: K N1 aN1 N2 aN2 ... NK aNK,其中K为多项式中非0项的个数,Ni 和 aNi (i=1, 2, ..., K) 分别为指数(exponents)和系数(coefficients)。
数的范围是1 <= K <= 10,0<= NK < ... < N2 < N1 <=1000。
输出:
在一行内输出A与B的和,格式与输入时相同。(注意每行的结尾不能有多余的空格。小数精确到一位。)
多项式的加法,是指多项式中同类项的系数相加,字母保持不变(即合并同类项)。
1.输入A和B,计算A+B
指数范围是0~1000,创建一个包含1001个float 的数组c来输入和计算。
2.输出结果,非0的项数,多项式( 高位在前)
#include<iostream> using namespace std; int main() { float c[1001] = { 0 }; int m, n, t; float num; cin >> m; for (int i = 0; i < m; i++) { cin>>t>>num; c[t] += num; } cin>>n; for (int i = 0; i < n; i++) { cin>>t>>num; c[t] += num; } int cnt = 0; for (int i = 0; i < 1001; i++) { if (c[i] != 0)cnt++; } cout<<cnt; for (int i = 1000; i >= 0; i--) { if (c[i] != 0.0) printf(" %d %.1f", i, c[i]); } return 0; }