浙大PAT满分之路-(第二天)甲级1002 A+B for Polynomials (25 分)

浙大PAT满分之路-(第二天)1002


原题:
原题
题目概要:计算多项式的项数以及每次项的系数
输入:两行,每行第一个代表要输入几个项,然后两个为一组,分别代表项的次数以及项的系数,第二行也一样。
输出:两个多项式相加,输出项数,然后两两对应从大到小输出项的次数,以及对应项的系数
难点:英语,保存项数的方式
提交结果:
在这里插入图片描述
前几次提交错误的情况有:
开头多了个空格,没有看到保留一位小数的要求,然后只使用了setprecision(1)函数,没有使用fixed填充0,因为只使用setprecision函数时会把为0时的末尾小数删掉,固需要使用fixed函数把末尾的0补上,具体可以百度这两个函数的用途。

思路:
首先考虑题目所给因素,保留一位小数
使用iomanip与setiosflags(ios::fixed)<<setprecision(1)使用
同时用数组下标代表项的次数
用对应的内容代表多项式的项数
输出前为了统计有多少项,先for遍历一次,找到所有有值项数,用sum变量统计项数,最终按格式输出
代码如下:

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
	int a;
	int exchange;
	double plus_num;
	int sum=0;
	double b[1005] = {0.0};
	int c;

	cin>>a;
	for(int i = 1;i<=a;i++){
		cin>>exchange;
		cin>>b[exchange];
	}
	cin>>c;
	for(int i = 1;i<=c;i++){
		cin>>exchange;
		cin>>plus_num;
		b[exchange]+=plus_num;
	}
	for(int i = 0;i<1001;i++){
		if(b[i]!=0){
			sum++;
		}
	}
	cout<<sum;
	for(int i = 1001;i>=0;i--){
		if(b[i]!=0){
		
		cout<<' '<<i<<' '<<setiosflags(ios::fixed)<<setprecision(1)<<b[i];
		
	    }
	}
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值