程式設計基礎41 tips 關於陣列從後往前遍歷
阿新 • • 發佈:2018-12-22
1009 Product of Polynomials (25 分)
This time, you are supposed to find A×B where A and B are two polynomials.
Input Specification:
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 Specification:
For each test case you should output the product of A and B in one line, with the same format as the input. Notice that there must be NO
Sample Input:
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output:
3 3 3.6 2 6.0 1 1.6
一,注意點
1,開的陣列長度是max_n,應當從max_n-1開始遍歷到下標為0的,不能從max_n開始。
二,程式碼
#include<cstdio> using namespace std; const int max_n =2020; double arr[max_n]={0}; struct Polynomial{ int ex; double coe; }pol[13]; int main(){ int num_1=0; int num_2=0; int K=0; double Nk=0; scanf("%d",&num_1); for(int i=0;i<num_1;i++){ scanf("%d %lf",&pol[i].ex,&pol[i].coe); } scanf("%d",&num_2); for(int i=0;i<num_2;i++){ int a=0; double b=0; scanf("%d %lf",&K,&Nk); for(int j=0;j<num_1;j++){ a=K+pol[j].ex; b=Nk*pol[j].coe; arr[a]+=b; } } int ans=0; /************************************ ************************************ 從max_n-1開始遍歷*********************/ for(int i=max_n-1;i>=0;i--){ if(arr[i]!=0){ ans++; } } printf("%d",ans); for(int i=max_n-1;i>=0;i--){ if(arr[i]!=0){ printf(" %d %.1f",i,arr[i]); } } return 0; }