题目描述
分析
就是求和啊。注意:
①系数为0不输出
②系数保留一位小数
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int k1,k2;
scanf("%d",&k1);
double a[k1*2];
for(int i = 0; i<k1*2; i++)
{
scanf("%lf",&a[i]);
}
scanf("%d",&k2);
double b[k2*2];
for(int i = 0; i<k2*2; i++)
{
scanf("%lf",&b[i]);
}
double c[k1*2+k2*2];
int f1 = 0;
int f2 = 0;
int i;
for(int z = 0 ; z<k1*2+k2*2;z++)
c[z]=-1;
for(i = 0; f1<k1*2&&f2<k2*2;i+=2)
{
if(a[f1]>b[f2])
{
c[i] = a[f1];
c[i+1] = a[f1+1];
f1+=2;
}else if(a[f1]<b[f2])
{
c[i] = b[f2];
c[i+1] = b[f2+1];
f2+=2;
}else
{
c[i]=a[f1];
c[i+1]=a[f1+1]+b[f2+1];
f1+=2;
f2+=2;
}
}
if(f1!=k1*2)
{
while(f1<k1*2)
{
c[i]=a[f1];
c[i+1]=a[f1+1];
f1+=2;
i+=2;
}
}
else if(f2!=k2*2)
{
while(f2!=k2*2)
{
c[i]=b[f2];
c[i+1] = b[f2+1];
f2+=2;
i+=2;
}
}
int num = 0 ;
for(int z = 0 ;z < i;z+=2)
{
if(c[z]!=-1&&(c[z+1]!=0))
num++;
}
printf("%d",num);
for(int z = 0 ;z < i;z+=2)
{
if(c[z]!=-1&&c[z+1]!=0)
printf(" %.0lf %.1lf",c[z],c[z+1]);
}
return 0;
}
//没优化、垃圾代码