PAT甲级题解目录javascript:void(0)
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;
}