第一次
用数组 用float型 且 没加绝对值 得5分
感觉数组会超时,换结构体
第二次
用结构体 用float型 且 没加绝对值 得20分
第三次
用结构体 用double型 且 没加绝对值 得20分
第四次
用结构体 用double型 且 加绝对值 得25分
第五次
用数组 用float型 且 加绝对值 得10分
第六次
用数组 用double型 且 加绝对值 得25分
数组
#include<iostream>
#include<math.h>
int main()
{
int ka,kb,aexpmax=0,bexpmax=0;
double a[1001]={0.0},c[2001]={0.0};
int i , j , temp ;
double tempcoe;
scanf("%d",&ka);
for(i=0;i<ka;i++)
{
scanf("%d",&temp);
scanf("%lf",&a[temp]);
if(temp>aexpmax) aexpmax=temp;
}
scanf("%d",&kb);
for(i=0;i<kb;i++)
{
scanf("%d",&temp);
scanf("%lf",&tempcoe);
if(temp>bexpmax) bexpmax=temp;
for(j=0;j<=aexpmax;j++)
{
c[j+temp]+=tempcoe*a[j];
}
}
int cexpmax=aexpmax+bexpmax;
int count=0;
for(i=cexpmax;i>=0;i--)
if(fabs(c[i])>=1e-6) count++;
printf("%d",count);
for(i=cexpmax;i>=0;i--)
if(fabs(c[i])>=1e-6)
printf(" %d %.1lf",i,c[i]);
printf("\n");
return 0;
}
结构体
#include<iostream>
#include<math.h>
#define N 11
struct term
{
int exp;
double coe;
}a[N],b[N];
int main()
{
int ka , kb ;
int aexpmax = 0 , bexpmax = 0 ;
int i , j , tempexp ,count =0;
double tempcoe,c[2001]={0.0};
scanf("%d",&ka);
for(i=0;i<ka;i++)
{
scanf("%d",&a[i].exp);
scanf("%lf",&a[i].coe);
if(a[i].exp>aexpmax) aexpmax=a[i].exp;
}
scanf("%d",&kb);
for(i=0;i<kb;i++)
{
scanf("%d",&b[i].exp);
scanf("%lf",&b[i].coe);
if(b[i].exp>bexpmax) bexpmax=b[i].exp;
}
for(i=0;i<ka;i++)
for(j=0;j<kb;j++)
{
tempexp=a[i].exp+b[j].exp;
tempcoe=a[i].coe*b[j].coe;
c[tempexp]+=tempcoe;
}
for(i=0;i<=(aexpmax+bexpmax);i++)
if(fabs(c[i])>=1e-6) count++;
printf("%d",count);
for(i=(aexpmax+bexpmax);i>=0;i--)
if(fabs(c[i])>=1e-6)
printf(" %d %.1lf",i,c[i]);
printf("\n");
return 0;
}