我是靠谱客的博主 畅快自行车,这篇文章主要介绍程序设计基础41 tips 关于数组从后往前遍历,现在分享给大家,希望可以做个参考。

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 N​1​​ a​N​1​​​​ N​2​​ a​N​2​​​​ ... N​K​​ a​N​K​​​​

where K is the number of nonzero terms in the polynomial, N​i​​ and a​N​i​​​​ (i=1,2,⋯,K) are the exponents and coefficients, respectively. It is given that 1≤K≤10, 0≤N​K​​<⋯<N​2​​<N​1​​≤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 extra space at the end of each line. Please be accurate up to 1 decimal place.

Sample Input:

复制代码
1
2
3
2 1 2.4 0 3.2 2 2 1.5 1 0.5

Sample Output:

复制代码
1
2
3 3 3.6 2 6.0 1 1.6

一,注意点

1,开的数组长度是max_n,应当从max_n-1开始遍历到下标为0的,不能从max_n开始。

二,代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#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; }

 

最后

以上就是畅快自行车最近收集整理的关于程序设计基础41 tips 关于数组从后往前遍历的全部内容,更多相关程序设计基础41内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部