浙大PAT甲级-1009
2017-06-29 11:18
281 查看
多项式乘法
关键点:
-用二维数组存多项式
-合并指数相同的项
-插入排序调整项的顺序#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
double a[10][2], b[10][2], ab[100][2];
int n, m, i, cnt=0;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i][0]>>a[i][1];
cin>>m;
for(i=0;i<m;i++)
cin>>b[i][0]>>b[i][1];
//计算
for(i=0;i<n;i++)
for(int j=0;j<m;j++){
ab[cnt][0]=a[i][0]+b[j][0];
ab[cnt++][1]=a[i][1]*b[j][1];
}
//合并
for(i=0;i<n*m;i++){
for(int j=i+1;j<n*m;j++)
{
if(ab[i][0]==ab[j][0]&&ab[i][0]!=-1){
ab[i][1]=ab[i][1]+ab[j][1];
ab[j][0]=-1;
}
}
}
//排序
for(i=1;i<n*m;i++){
double temp0=ab[i][0];
double temp1=ab[i][1];
for(int j=i-1;j>=0;j--){
if(temp0>ab[j][0]){
ab[j+1][0]=ab[j][0];
ab[j+1][1]=ab[j][1];
}else{
ab[j+1][0]=temp0;
ab[j+1][1]=temp1;
break;
}
}
}
i=0;
cnt=0;
while(i<m*n){
if(ab[i][0]>=0&&ab[i][1]!=0)
cnt++;
i++;
}
printf("%d",cnt);
i=0;
while(i<m*n){
if(ab[i][0]>=0&&ab[i][1]!=0){
int e=(int)ab[i][0];
printf(" %d %.1f",e,ab[i][1]);
}
i++;
}
return 0;
}
关键点:
-用二维数组存多项式
-合并指数相同的项
-插入排序调整项的顺序#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
double a[10][2], b[10][2], ab[100][2];
int n, m, i, cnt=0;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i][0]>>a[i][1];
cin>>m;
for(i=0;i<m;i++)
cin>>b[i][0]>>b[i][1];
//计算
for(i=0;i<n;i++)
for(int j=0;j<m;j++){
ab[cnt][0]=a[i][0]+b[j][0];
ab[cnt++][1]=a[i][1]*b[j][1];
}
//合并
for(i=0;i<n*m;i++){
for(int j=i+1;j<n*m;j++)
{
if(ab[i][0]==ab[j][0]&&ab[i][0]!=-1){
ab[i][1]=ab[i][1]+ab[j][1];
ab[j][0]=-1;
}
}
}
//排序
for(i=1;i<n*m;i++){
double temp0=ab[i][0];
double temp1=ab[i][1];
for(int j=i-1;j>=0;j--){
if(temp0>ab[j][0]){
ab[j+1][0]=ab[j][0];
ab[j+1][1]=ab[j][1];
}else{
ab[j+1][0]=temp0;
ab[j+1][1]=temp1;
break;
}
}
}
i=0;
cnt=0;
while(i<m*n){
if(ab[i][0]>=0&&ab[i][1]!=0)
cnt++;
i++;
}
printf("%d",cnt);
i=0;
while(i<m*n){
if(ab[i][0]>=0&&ab[i][1]!=0){
int e=(int)ab[i][0];
printf(" %d %.1f",e,ab[i][1]);
}
i++;
}
return 0;
}
相关文章推荐
- 浙大 PAT 甲级1009
- 浙大PAT甲级 1030
- 浙大PAT甲级 1039
- 浙大PAT甲级 1047
- 浙大PAT甲级 1077
- **浙大PAT甲级 1086 二叉树的先中根遍历求后根遍历
- 浙大PAT甲级 1104
- *浙大PAT甲级 1107 并查集
- *浙大PAT甲级 1110 判断是否为完全二叉树
- PAT(甲级)1009
- 浙大PAT甲级-1061
- pat甲级1009:Product of Polynomials
- 浙大PAT甲级 1062
- **浙大PAT甲级 1066 平衡二叉查找树
- **浙大PAT甲级 1078
- 浙大PAT甲级 1097
- 浙大PAT甲级-1004
- 浙大PAT甲级1006
- PAT甲级 1009
- 浙大PAT甲级-1012