PAT 1009
2016-06-04 22:00
204 查看
这个是多项相乘,坑还是系数为0的地方,不过我做这题用了一个巧妙的办法,定义第三个数组是,让数组才c[i].ai值直接等于i,i表示某一项的指数,后面将两个多项式相乘得到的项的指数t的系数存入c数组下标为t的元素的ani中,具体实现看代码
题目链接:https://www.patest.cn/contests/pat-a-practise/1009
<span style="font-family:Microsoft YaHei;font-size:18px;">#include<iostream> #include<iomanip> using namespace std; struct poly{ float ani; int ai; }; int Max(int a1,int a2){ return a1>a2? a1:a2; } int main(){ int n1; cin>>n1; poly a[105]; poly b[105]; poly c[10000]; poly a2; int max; for(int i=0;i<n1;i++){ cin>>a[i].ai; cin>>a[i].ani; } int n2; cin>>n2; for(int i=0;i<n2;i++){ cin>>b[i].ai; cin>>b[i].ani; } int n3=Max(n1,n2); for(int i=0;i<10000;i++){ c[i].ai=i; c[i].ani=0; } for(int i=0;i<n1;i++){ for(int j=0;j<n2;j++){ a2.ani=a[i].ani*b[j].ani; a2.ai=a[i].ai+b[j].ai; if(c[a2.ai].ani==0){ c[a2.ai].ani=a2.ani; }else{ c[a2.ai].ani+=a2.ani; } } } int j=0; for( int i=0;i<10000;i++){ if(c[i].ani!=0){ c[j].ai=c[i].ai; c[j].ani=c[i].ani; j++; } } max=j; if(max==0) cout<<0<<endl; else{ cout<<max; for(int i=max-1;i>=0;i--) cout<<" "<<c[i].ai<<" "<<fixed<<setprecision(1)<<c[i].ani; } cout<<endl; return 0; }</span>
相关文章推荐
- libdvbpsi源码分析(四)PAT表解析/重建
- PAT配置
- 什么是端口复用动态地址转换(PAT) 介绍配置实例
- MikroTik layer7-protocol
- PAT是如何工作的
- PAT 乙级题:1002. 写出这个数 (20)
- PAT (Advanced Level) Practise 1001-1010
- 数据结构学习与实验指导(一)
- PAT Basic Level 1001-1010解题报告
- PAT 数素数
- PAT 福尔摩斯的约会
- PAT 德才论
- PAT 月饼
- 1001. 害死人不偿命的(3n+1)猜想
- 1002. 写出这个数
- 1032. 挖掘机技术哪家强
- 1001. 害死人不偿命的(3n+1)猜想 (PAT basic)
- 1002. 写出这个数(PAT Basic)
- 1004. 成绩排名(PAT Basic)
- 1006. 换个格式输出整数(PAT Basic)