• A1002 A+B for Polynomials[简单模拟--多项式相加]


    This time, you are supposed to find A+B where A and B are two polynomials.

    Input

    Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 … NK aNK, where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, …, K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < … < N2 < N1 <=1000.

    Output

    For each test case you should output the sum of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.

    Sample Input
    2 1 2.4 0 3.2
    2 2 1.5 1 0.5
    Sample Output
    3 2 1.5 1 2.9 0 3.2

    大意:
    程序输入为两行:均为一个多项式,按 K N1 An1 N2 An2…Nk Ank,K代表的是多项式的非零项数,范围闭区间是[1,10],N1到Nk的范围区间是 1<= Nk <= …<= N1 <= 1000;

    Nk是指数,Ank是系数,遇到相同的指数,系数进行累加,从而合并成一个多项式。

    ————————————————-—————————
    这题自己的写法复杂而且花了很久时间没找出问题,昨晚没睡好有点脑袋发晕,后面看了看最优做法很清晰明了,直接学习了算了,不想整了

    #include<iostream>
    using namespace std;
    double p[1001];
    int main()
    {
    	int k, n, count = 0;
    	double a;
    	cin >> k;
    	for (int i = 0; i < k; i++)
    	{
    		cin >> n >> a;
    		p[n] += a;
    	}
    	cin >> k;
    	for (int i = 0; i < k; i++)
    	{
    		cin >> n >> a;
    		p[n] += a;
    	}
    	for (int i = 0; i < 1001; i++)
    	{
    		if (p[i] != 0)
    			count++;
    	}
    	cout << count;
    	for (int i = 1000; i >= 0; i--)
    		if (p[i] != 0)printf(" %d %.1f",i,p[i]);
    	return 0;
    }
    
  • 相关阅读:
    我理解的BFC
    框架设计—选择器模块
    eval 的使用与延展
    Git学习笔记
    CSS3选择器学习笔记
    JavaScript继承学习笔记
    JavaScript原型与原型链学习笔记
    javascript面向对象编程笔记
    GitHub图形界面使用笔记
    HTML5表单学习笔记
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13812097.html
Copyright © 2020-2023  润新知