标签:scanf 错误 ble cst clu 多项式 str can code
题意:模拟多项式相乘
思路:略。有一个注意点,题目中说指数最大为1000,当两个多项式相乘后,指数最大就为2000,这一点不注意会出现段错误。
代码:
#include <cstdio> const int N=2005;//注意N必须大于等于2000,而不能是1000 struct Term{ double coe;//系数 int exp;//指数 }a[100],b[100]; int main() { //freopen("pat.txt","r",stdin); int ka,kb; scanf("%d",&ka); for(int i=0;i<ka;i++) scanf("%d%lf",&a[i].exp,&a[i].coe); scanf("%d",&kb); for(int i=0;i<kb;i++) scanf("%d%lf",&b[i].exp,&b[i].coe); double product[N]={0};//下标存放指数,对应的值代表系数 for(int i=0;i<ka;i++){ for(int j=0;j<kb;j++){ int exp=a[i].exp+b[j].exp; double coe=a[i].coe*b[j].coe; product[exp]+=coe; } } int len=0; for(int i=0;i<N;i++){ if(product[i]!=0) len++; } printf("%d",len); for(int i=N-1;i>=0;i--){ if(product[i]!=0) printf(" %d %.1f",i,product[i]); } return 0; }
标签:scanf 错误 ble cst clu 多项式 str can code
原文地址:https://www.cnblogs.com/kkmjy/p/9559617.html