PAT 1001 和 1002 A+B问题

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;
}

猜你喜欢

转载自blog.csdn.net/qq_41068877/article/details/81974164